Свойство lineSpacing внутри UILabel не работает должным образом
Я пытаюсь создать кастом UILabel
класс, который позволит мне увеличить межстрочный интервал на UILabel. Я знаю, что вы можете сделать это в IB с помощью атрибутивной текстовой строки, однако это не работает, если вы используете пользовательские шрифты. Вот мой код класса:
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
и / или maximumLineHeight
свойства, но они просто, кажется, портят это другими способами...
1 ответ
Решение
Итак... Оказалось, что собственность lineSpacing
каким-то образом конфликтует с возможной частной переменной / свойством внутри UILabel
, Я переименовал свою собственность в leading
и теперь работает отлично.