UILabel 内的 lineSpacing 属性 未按预期工作
lineSpacing property inside UILabel doesn't work as expected
我正在尝试创建自定义 UILabel
class,这将允许我增加 UILabel 上的行间距。我知道您可以在 IB 中使用属性文本字符串执行此操作,但是如果您使用自定义字体,则它不起作用。这是我的 class 代码:
import UIKit
@IBDesignable
class SpacingLabel: UILabel
{
@IBInspectable var lineSpacing: CGFloat = 10.0
override func awakeFromNib()
{
self.renderText()
}
override func prepareForInterfaceBuilder()
{
super.prepareForInterfaceBuilder()
self.renderText()
}
func renderText()
{
var attrString = NSMutableAttributedString(string:self.text!)
if font != nil
{
NSMutableParagraphStyle.defaultParagraphStyle().mutableCopy()
var paragraphStyle = NSMutableParagraphStyle.defaultParagraphStyle().mutableCopy() as! NSMutableParagraphStyle
paragraphStyle.textAlignment = self.textAlignment
paragraphStyle.lineSpacing = self.lineSpacing
paragraphStyle.paragraphSpacing = self.lineSpacing
attrString.addAttributes([NSFontAttributeName : self.font!, NSParagraphStyleAttributeName : paragraphStyle], range: NSMakeRange(0, attrString.length))
self.attributedText = attrString
}
self.needsUpdateConstraints()
}
}
这是它在 IB(故事板)中的呈现方式:
下面是它在模拟器中的呈现方式:
我试过添加 minimumLineHeight
and/or maximumLineHeight
属性,但这些似乎在其他方面搞砸了...
所以...原来 属性 lineSpacing
与 UILabel
中可能的私有 variable/property 有某种冲突。我将我的 属性 重命名为 leading
,现在它完美运行了。
我正在尝试创建自定义 UILabel
class,这将允许我增加 UILabel 上的行间距。我知道您可以在 IB 中使用属性文本字符串执行此操作,但是如果您使用自定义字体,则它不起作用。这是我的 class 代码:
import UIKit
@IBDesignable
class SpacingLabel: UILabel
{
@IBInspectable var lineSpacing: CGFloat = 10.0
override func awakeFromNib()
{
self.renderText()
}
override func prepareForInterfaceBuilder()
{
super.prepareForInterfaceBuilder()
self.renderText()
}
func renderText()
{
var attrString = NSMutableAttributedString(string:self.text!)
if font != nil
{
NSMutableParagraphStyle.defaultParagraphStyle().mutableCopy()
var paragraphStyle = NSMutableParagraphStyle.defaultParagraphStyle().mutableCopy() as! NSMutableParagraphStyle
paragraphStyle.textAlignment = self.textAlignment
paragraphStyle.lineSpacing = self.lineSpacing
paragraphStyle.paragraphSpacing = self.lineSpacing
attrString.addAttributes([NSFontAttributeName : self.font!, NSParagraphStyleAttributeName : paragraphStyle], range: NSMakeRange(0, attrString.length))
self.attributedText = attrString
}
self.needsUpdateConstraints()
}
}
这是它在 IB(故事板)中的呈现方式:
下面是它在模拟器中的呈现方式:
我试过添加 minimumLineHeight
and/or maximumLineHeight
属性,但这些似乎在其他方面搞砸了...
所以...原来 属性 lineSpacing
与 UILabel
中可能的私有 variable/property 有某种冲突。我将我的 属性 重命名为 leading
,现在它完美运行了。