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仍然有效…