CATextLayer正在忽略NSMutableParagraphStyle
我想使用CATextLayer正在忽略NSMutableParagraphStyle,catextlayer,Catextlayer,我想使用NSMutableAttributedString在CATextLayer上用文本绘制文本。我尝试通过[attrsingsetattributes:attributes range:range]将属性设置为NSMutableAttributedString的类似字体和字体颜色但忽略NSMutableParagraphStyle中的所有属性 let str = "I want to use NSMutableAttributedString to draw the text on the
NSMutableAttributedString
在CATextLayer
上用文本绘制文本。我尝试通过[attrsingsetattributes:attributes range:range]将属性设置为NSMutableAttributedString
的类似字体和字体颜色代码>但忽略NSMutableParagraphStyle
中的所有属性
let str = "I want to use NSMutableAttributedString to draw the text on the CATextLayer with the text. I try set attributes to the like font and fontcolor of the NSMutableAttributedString through the [attrString setAttributes:attributes range:range]; but all attributes in the NSMutableParagraphStyle are ignored."
let att = NSMutableAttributedString(string: str)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = 12
att.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSMakeRange(0, str.characters.count))
let contentLayer = initTextLayer("", andFontSize: 11)
contentLayer.string = att
contentLayer.frame = CGRect(x: 30 * AUTOSIZESCALEX, y: CGRectGetMaxY(titleLayer.frame) + 15 * AUTOSIZESCALEY, width: SCREEN_WIDTH - 60 * AUTOSIZESCALEX, height: 200 * AUTOSIZESCALEY)
self.contentView.layer.addSublayer(contentLayer)
func initTextLayer(title: String, andFontSize size: CGFloat) -> CATextLayer{
let textLayer = CATextLayer()
textLayer.foregroundColor = UIColor(hexString: "333333").CGColor
textLayer.string = title
textLayer.alignmentMode = kCAAlignmentLeft
textLayer.contentsScale = UIScreen.mainScreen().scale
textLayer.shouldRasterize = false
textLayer.wrapped = true
textLayer.fontSize = size * AUTOSIZESCALEY
return textLayer
}
有什么地方我做错了吗?我遇到了类似的问题,并使用了以下方法:
// Set text alignment. Apparently CATextLayer doesn't use value in NSAttributedString.
if let style = text.attribute(NSParagraphStyleAttributeName, atIndex: 0, effectiveRange: nil) as? NSParagraphStyle {
switch style.alignment {
case .Center:
textLayer.alignmentMode = kCAAlignmentCenter
case .Left:
textLayer.alignmentMode = kCAAlignmentLeft
case .Right:
textLayer.alignmentMode = kCAAlignmentRight
default:
break
}
}
我遇到了类似的问题,并使用了以下方法:
// Set text alignment. Apparently CATextLayer doesn't use value in NSAttributedString.
if let style = text.attribute(NSParagraphStyleAttributeName, atIndex: 0, effectiveRange: nil) as? NSParagraphStyle {
switch style.alignment {
case .Center:
textLayer.alignmentMode = kCAAlignmentCenter
case .Left:
textLayer.alignmentMode = kCAAlignmentLeft
case .Right:
textLayer.alignmentMode = kCAAlignmentRight
default:
break
}
}
这个答案在2019年和iOS 13仍然有效…这个答案在2019年和iOS 13仍然有效…