1. 程式人生 > >label實現首行縮排

label實現首行縮排

用label顯示文章的時候要實現首行縮排的問題,但是ios10 ios 9 ios 8這三個版本其中10 和 8 用\t 可以正常顯示 但是 9 \t 這個佔位符太不明顯,所以換一種方法來進行首行縮排。
主要知識點:1.NSMutableParagraphStyle
2.NSMutableAttributedString
上程式碼

/**
     設定首行縮排

     - parameter str: 要修改的文字

     - returns: 修改後的文字
     */
    func firstLineHeadIndent(str:String) -> NSMutableAttributedString
    {
        let mutableString = NSMutableAttributedString.init(string: str)
        let style = NSMutableParagraphStyle()
        style.alignment = .Left
        //設定首行邊距 畫素 這邊要根據字型大小來設定
style.firstLineHeadIndent = 28 let attr:[String:AnyObject] = [ NSFontAttributeName:UIFont.systemFontOfSize(13), NSForegroundColorAttributeName:PublicAttributePool().textColorCray, NSParagraphStyleAttributeName:style ] mutableString.addAttributes(attr, range: NSRange.init(location: 0
, length: str.characters.count - 1)) return mutableString }

此外附上官方文件的提醒:
IMPORTANT

A paragraph style object should not be mutated after adding it to an attributed string; doing so can cause your program to crash.
段落樣式屬性在新增進屬性字串之後不要再改變其設定,否則會導致程式崩潰。