Swift - 设置UILabel、UITextView的文字行间距
有时我们需要调整 label 或 textView 的文本行间距大小,但这两个组件都没有相关属性可以直接设置。这个就需要借助富文本(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是可编辑的情况
如果是想在输入内容的时候就按照设置的行间距进行动态改变,那就需要将相关代码放到 textview 的 delegate 方法里。
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() } }