Don_Mag icon

Untitled

Don_Mag | PRO | 07/02/22 05:01:17 PM UTC (Edited) | 0 ⭐ | 996 👁️ | Never ⏰ | []
Swift |

3.12 KB

|

None

|

0 👍

/

0 👎

class StrTestVC: UIViewController, UITextViewDelegate {
    
    var textView: ScriptEditingView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        textView = ScriptEditingView(frame: .zero, textContainer: nil)
        textView.backgroundColor = .black
        textView.delegate = self
        view.addSubview(textView)
        textView.allowsEditingTextAttributes = true
        
        let guide = view.safeAreaLayoutGuide
        
        textView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            textView.leadingAnchor.constraint(equalTo: guide.leadingAnchor),
            textView.trailingAnchor.constraint(equalTo: guide.trailingAnchor),
            textView.topAnchor.constraint(equalTo: view.topAnchor),
            textView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
        ])
        
        let attributedString = sampleAttrString()
 
        textView.attributedText = attributedString
        
        NSLog("Attributed now")
        dumpAttributesOfText()
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
            NSLog("Attributes after 1 sec")
            self.dumpAttributesOfText()
        }
    }
 
    private func dumpAttributesOfText() {
        textView.attributedText?.enumerateAttributes(in: NSRange(location: 0, length: textView.attributedText!.length), options: .longestEffectiveRangeNotRequired, using: { dictionary, range, stop in
            NSLog(" range \(range)")
            
            if let font = dictionary[.font] as? UIFont {
                NSLog("Font at range \(range) - \(font.fontName), \(font.pointSize)")
            }
            
            if let foregroundColor = dictionary[.foregroundColor] as? UIColor {
                NSLog("Foregroundcolor \(foregroundColor) at range \(range)")
            }
            
            if let underline = dictionary[.underlineStyle] as? Int {
                NSLog("Underline \(underline) at range \(range)")
            }
        })
    }
    
    func sampleAttrString() -> NSMutableAttributedString {
        guard let theFont: UIFont = UIFont(name: "HelveticaNeue", size: 30.0) else {
            fatalError()
        }
        
        let attsA: [NSAttributedString.Key : Any] = [
            .font: theFont,
            .foregroundColor: UIColor.white,
        ]
        
        let gRGB = CGColorSpace(name: CGColorSpace.genericRGBLinear)!
        let theCGColor = CGColor(colorSpace: gRGB, components: [0.96863, 0.80784, 0.27451, 1])!
        let theColor = UIColor(cgColor: theCGColor)
 
        let attsB: [NSAttributedString.Key : Any] = [
            .font: theFont,
            .foregroundColor: theColor,
        ]
        
        let partOne = NSMutableAttributedString(string: "1234567890123 ", attributes: attsA)
        let partTwo = NSAttributedString(string: "String", attributes: attsB)
        
        partOne.append(partTwo)
        
        return partOne
    }
 
}
 
/*
output:
 
 Attributed now
  range {0, 14}
 Font at range {0, 14} - HelveticaNeue, 30.0
 Foregroundcolor UIExtendedGrayColorSpace 1 1 at range {0, 14}
  range {14, 6}
 Font at range {14, 6} - HelveticaNeue, 30.0
 Foregroundcolor kCGColorSpaceModelRGB 0.96863 0.80784 0.27451 1  at range {14, 6}
 
 Attributes after 1 sec
  range {0, 14}
 Font at range {0, 14} - HelveticaNeue, 30.0
 Foregroundcolor UIExtendedGrayColorSpace 1 1 at range {0, 14}
  range {14, 6}
 Font at range {14, 6} - HelveticaNeue, 30.0
 Foregroundcolor kCGColorSpaceModelRGB 0.96863 0.80784 0.27451 1  at range {14, 6}
 
*/
 

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎