返回 导航

Swift

hangge.com

Swift - 设置UILabel、UITextView的文字行间距

作者:hangge | 2017-03-01 08:10
有时我们需要调整 labeltextView 的文本行间距大小,但这两个组件都没有相关属性可以直接设置。这个就需要借助富文本(NSAttributedString)来实现。

一、设置UILabel的行间距

1,效果图

左侧是默认的行间距,右侧是将行间距修改成 20
            

2,样例代码

import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let label = UILabel(frame:CGRect(x:10, y:20, width:300, height:100))
        //设置允许换行
        label.numberOfLines = 0
        //要显示的文字
        let str = "欢迎访问hangge.com 欢迎访问hangge.com 欢迎访问hangge.com"
        //通过富文本来设置行间距
        let paraph = NSMutableParagraphStyle()
        //将行间距设置为28
        paraph.lineSpacing = 20
        //样式属性集合
        let attributes = [NSFontAttributeName:UIFont.systemFont(ofSize: 15),
                          NSParagraphStyleAttributeName: paraph]
        label.attributedText = NSAttributedString(string: str, attributes: attributes)
        self.view.addSubview(label)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}


二、设置UITextView的行间距

1,UITextView是只读的情况

也就是说 textview 只用来显示一段文字,不输入。那么设置行间距的方法和 label 是一样的。下面代码将行间距修改成 20

import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let textView = UITextView(frame:CGRect(x:10, y:20, width:300, height:100))
        //要显示的文字
        let str = "欢迎访问hangge.com 欢迎访问hangge.com 欢迎访问hangge.com"
        //通过富文本来设置行间距
        let paraph = NSMutableParagraphStyle()
        //将行间距设置为28
        paraph.lineSpacing = 20
        //样式属性集合
        let attributes = [NSFontAttributeName:UIFont.systemFont(ofSize: 15),
                          NSParagraphStyleAttributeName: paraph]
        textView.attributedText = NSAttributedString(string: str, attributes: attributes)
        self.view.addSubview(textView)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}


2,UITextView是可编辑的情况

如果是想在输入内容的时候就按照设置的行间距进行动态改变,那就需要将相关代码放到 textviewdelegate 方法里。
import UIKit

class ViewController: UIViewController, UITextViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let textView = UITextView(frame:CGRect(x:10, y:20, width:300, height:100))
        //设置代理
        textView.delegate = self
        //添加到视图中
        self.view.addSubview(textView)
    }
    
    func textViewDidChange(_ textView: UITextView) {
        //获取文本内容
        let str = textView.text!
        //通过富文本来设置行间距
        let paraph = NSMutableParagraphStyle()
        //将行间距设置为28
        paraph.lineSpacing = 20
        //样式属性集合
        let attributes = [NSFontAttributeName:UIFont.systemFont(ofSize: 15),
                          NSParagraphStyleAttributeName: paraph]
        textView.attributedText = NSAttributedString(string: str, attributes: attributes)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
评论

全部评论(0)

回到顶部