I'm trying to set the text with CATextLayer and UILabel.
Same Font, Size and Bounds but WordWrapping result is different.
Here is my code.
let textHeaderAttributes = [
NSAttributedStringKey.font: UIFont.boldSystemFont(ofSize: 24), // font
NSAttributedStringKey.foregroundColor: UIColor.white, // text color
// NSAttributedStringKey.backgroundColor: UIColor.black
]
let textHeader = NSAttributedString(string: "A classic, meaningful, functional gift", attributes: textHeaderAttributes )
//CATextLayer
let frontHeaderText = CATextLayer()
frontHeaderText.string = textHeader
frontHeaderText.contentsScale = UIScreen.main.scale
frontHeaderText.isWrapped = true
frontHeaderText.alignmentMode = kCAAlignmentLeft
frontHeaderText.frame = CGRect(x: 16, y: 381, width: screenSize.width - 16, height: frontHeaderTextHeight[0])
frontLayer.addSublayer(frontHeaderText)
//UILabel
let rearHeaderText = UILabel()
rearHeaderText.attributedText = textHeader
rearHeaderText.textAlignment = .left
rearHeaderText.lineBreakMode = NSLineBreakMode.byWordWrapping
rearHeaderText.numberOfLines = 0
rearHeaderText.frame = CGRect(x: 16, y: 381, width: screenSize.width - 16, height: frontHeaderTextHeight[0])
rearLayer.addSubview(rearHeaderText)
//Calculate label's height func getLabelHeight(text:String, font:UIFont, lineNumber:Int) -> CGFloat{
let label = UILabel()
label.frame = CGRect(x: 0, y: 0, width: screenSize.width - 32, height: 100)
label.text = text
label.font = font
label.textAlignment = NSTextAlignment.left
label.numberOfLines = lineNumber;
label.sizeToFit()
return label.frame.height
}