Swift 4中如何调整UILabel行间距?标识符未解析问题求助
解决UILabel行间距设置时的
NSParagraphStyleAttributeName未识别问题 嘿,这个坑我之前踩过!你遇到的错误完全是因为Swift版本迭代后的API命名变更——原来的NSParagraphStyleAttributeName是Swift 2及更早版本的写法,在Swift 3及之后的版本(现在Xcode默认都是这个版本区间了),这个属性已经被重命名为NSAttributedString.Key.paragraphStyle,所以Xcode会提示“未识别的标识符”。
给你两种靠谱的实现方式,直接就能用:
方式一:给UILabel写个扩展(推荐,复用性高)
extension UILabel { func configureLineSpacing(_ spacing: CGFloat) { guard let labelText = self.text else { return } // 创建可变段落样式,设置行间距 let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineSpacing = spacing // 可选:还可以设置行高倍数、对齐方式等 // paragraphStyle.lineHeightMultiple = 1.2 // 构建富文本 let attributedContent: NSMutableAttributedString if let existingAttributedText = self.attributedText { attributedContent = NSMutableAttributedString(attributedString: existingAttributedText) } else { attributedContent = NSMutableAttributedString(string: labelText) } // 应用段落样式到整个文本范围 attributedContent.addAttribute( NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedContent.length) ) self.attributedText = attributedContent } }
使用的时候直接调用:
// 比如给你的label设置2.5的行间距 yourLabel.configureLineSpacing(2.5)
方式二:直接设置(适合临时用一次的场景)
let targetLabel = UILabel() targetLabel.text = "这里是需要设置行间距的多行文本内容,测试一下效果如何。" // 配置段落样式 let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineSpacing = 3.0 // 自定义行间距数值 // 生成富文本并赋值 let attributedText = NSMutableAttributedString(string: targetLabel.text!) attributedText.addAttribute( NSAttributedString.Key.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedText.length) ) targetLabel.attributedText = attributedText
本质上就是把旧的属性名替换成新的NSAttributedString.Key.paragraphStyle,原来的思路是完全正确的,只是API名称变了而已~
内容的提问来源于stack exchange,提问作者Enes
相关产品推荐
相关产品推荐

