如何快速将文本与NSAttributedString对齐

问题描述

我正在寻找NSAttributedString中的Align Text。它应该在相同的缩进(相同列的字符串列表)上。

输出

enter image description here

我已使用以下代码

    func setAttributedText() {
   
        let image1Attachment = NSTextAttachment()
        image1Attachment.image = UIImage(named: "checkgreen.png")
        image1Attachment.bounds = CGRect(x: 0,y: (contentLabel.font.capHeight - image1Attachment.image!.size.height).rounded() / 2,width: image1Attachment.image!.size.width,height: image1Attachment.image!.size.height)
        
        var attributes = [NSAttributedString.Key: Any]()
        attributes[.font] = UIFont.preferredFont(forTextStyle: .body)
        attributes[.foregroundColor] = UIColor.black
        
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.headindent = 50
        attributes[.paragraphStyle] = paragraphStyle
        
        
        
        let line0 = NSAttributedString(string: "Dummy text is text that is used in the publishing industry or by web designers to occupy the space which will later be filled with 'real' content. \n")
        let line1 = NSAttributedString(string: "Your account will be charged for renewal within 24-hours prior to the end of the current subscription perio\n")
//        let line2 = NSAttributedString(string: "You can manage your subscriptions and turn off auto-renewal by going to your Account Settings on th")

            
        
        let checkgreenImageAttribute = NSMutableAttributedString(attributedString: NSAttributedString(attachment: image1Attachment))
        let finalString = NSMutableAttributedString(attributedString: checkgreenImageAttribute)
        finalString.append(line0)
        finalString.append(checkgreenImageAttribute)
        finalString.append(line1)
//        finalString.append(checkgreenImageAttribute)
//        finalString.append(line2)
        contentLabel.attributedText = finalString
    }

注意:我不想使用要点

解决方法

在属性字符串中,NSTextAttachment成为字符串中的字符。

因此,将attributes应用到整个字符串后,再进行“组合”:

    let checkgreenImageAttribute = NSMutableAttributedString(attributedString: NSAttributedString(attachment: image1Attachment))
    let finalString = NSMutableAttributedString(attributedString: checkgreenImageAttribute)
    finalString.append(line0)
    finalString.append(checkgreenImageAttribute)
    finalString.append(line1)
    
    // apply paragraph attributes here
    finalString.addAttributes(attributes,range: NSRange(location: 0,length: finalString.length))