iOS UILabel设置行间距和字间距

实现UILabel的文字,设置行间距和字间距。 

效果图:

代码:

        let lblTitle = UILabel(frame: CGRect(x: 10, y: 150, width: KScreenWidth-20, height: 100))
        lblTitle.textColor = UIColor.white
        lblTitle.backgroundColor = UIColor.darkGray
        lblTitle.textAlignment = .center
        lblTitle.numberOfLines = 0
        lblTitle.font = UIFont.systemFont(ofSize: 12)
        lblTitle.text = "SDCycleScrollView之前一直在OC中使用觉得很简单又熟悉了所以这次写的Demo依旧搬了过来.SDCycleScrollView之前一直在OC中使用觉得很简单又熟悉了所以这次写的Demo依旧搬了过来."
        self.view.addSubview(lblTitle)

        let attrStr = NSMutableAttributedString(string: lblTitle.text!)
        //设置行间距
        let style:NSMutableParagraphStyle  = NSMutableParagraphStyle()
        style.lineSpacing = 10              //行间距(垂直上的间距)
        style.lineBreakMode = .byCharWrapping       //英文字符拆开显示,byWordWrapping表示不拆开显示
        style.alignment = .center           //居中显示(如果要设置alignment,这个必须设置,因为label的textAlignment会无效)
        style.firstLineHeadIndent = 25.0    //设置首行字符缩进距离
        style.headIndent = 5                //每行的左右间距
        attrStr.addAttribute(NSParagraphStyleAttributeName, value: style, range: NSRange(location: 0, length: (lblTitle.text?.characters.count)!))
        //设置字间距
        attrStr.addAttribute(NSKernAttributeName, value: 1.5, range: NSRange(location: 0, length: (lblTitle.text?.characters.count)!))
        lblTitle.attributedText = attrStr

 

以上的参数,都可以自己根据需求封装方法。

行间距:lineSpacing

字间距:NSKernAttributeName 的value值

其他。。。

 

最后,如果要计算设置后的高度或size

把 NSParagraphStyleAttributeName、NSKernAttributeName两个属性设置完毕后,再作为 boundingRectWithSize 方法的 attributes属性 就行了。

 

参考网络:

 

 

enjoy~

posted @ 2017-07-10 16:32  那一抹风情  阅读(4000)  评论(0编辑  收藏  举报