Как реализовать межстрочный интервал UILabel, используя xib?

Я хочу выровнять UILabelтекст по вертикали с межстрочным интервалом через xib в iOS, например:

 hello,
 how are
 you?

Пожалуйста, помогите мне.

4 ответа

Да, можно настроить межстрочный интервал через XIB. Нажмите на UIlabel на xib, затем измените тип свойства text на Attributed, затем просмотрите следующие изображения. Затем введите новую строку (нажмите комбинацию клавиш ctrl-return) и удерживайте курсор между двумя строками, затем отрегулируйте свойства "line" и "Max Height", которые вы хотите. Мой текст UILael "Привет, как ты?"

введите описание изображения здесь

Создайте этот простой подкласс UILabel:

@interface CustomLabel : UILabel
@property (assign, nonatomic) CGFloat myLineSpacing;
@end


@implementation CustomLabel

- (void)setMyLineSpacing:(CGFloat)myLineSpacing {
    _myLineSpacing = myLineSpacing;
    self.text = self.text;
}

- (void)setText:(NSString *)text {
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineSpacing = _myLineSpacing;
    paragraphStyle.alignment = self.textAlignment;
    NSDictionary *attributes = @{NSParagraphStyleAttributeName: paragraphStyle};
    NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text
                                                                         attributes:attributes];
    self.attributedText = attributedText;
}

Задавать myLineSpacing стоимость имущества с ИБ.

Скриншот

Тем не менее, вы не можете просмотреть в IB, но значение межстрочного интервала в xib!
Вы можете установить label.text в вашем коде, не заботясь о межстрочном интервале.

Замечания:
не делайте имя свойства "lineSpacingMsgstr "У UILabel есть недокументированное свойство lineSpacing и переопределение, которое что-то ломает.

* Из Интерфейсного Разработчика:**

Программный:

SWift 4

Использование расширения метки

extension UILabel {

    // Pass value for any one of both parameters and see result
    func setLineSpacing(lineSpacing: CGFloat = 0.0, lineHeightMultiple: CGFloat = 0.0) {

        guard let labelText = self.text else { return }

        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineSpacing = lineSpacing
        paragraphStyle.lineHeightMultiple = lineHeightMultiple

        let attributedString:NSMutableAttributedString
        if let labelattributedText = self.attributedText {
            attributedString = NSMutableAttributedString(attributedString: labelattributedText)
        } else {
            attributedString = NSMutableAttributedString(string: labelText)
        }

        // Line spacing attribute
        attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attributedString.length))

        self.attributedText = attributedString
    }
}

Теперь вызовите функцию расширения

let label = UILabel()
let stringValue = "How\nto\nimplement\nUILabel\nline\nspacing\nusing\nxib?"

// Pass value for any one argument - lineSpacing or lineHeightMultiple
label.setLineSpacing(lineSpacing: 2.0) .  // try values 1.0 to 5.0

// or try lineHeightMultiple
//label.setLineSpacing(lineHeightMultiple = 2.0) // try values 0.5 to 2.0

Или используя экземпляр метки (просто скопируйте и выполните этот код, чтобы увидеть результат)

let label = UILabel()
let stringValue = "How\nto\nimplement\nUILabel\nline\nspacing\nusing\nxib?"
let attrString = NSMutableAttributedString(string: stringValue)
var style = NSMutableParagraphStyle()
style.lineSpacing = 24 // change line spacing between paragraph like 36 or 48
style.minimumLineHeight = 20 // change line spacing between each line like 30 or 40

// Line spacing attribute
attrString.addAttribute(NSAttributedStringKey.paragraphStyle, value: style, range: NSRange(location: 0, length: stringValue.characters.count))

// Character spacing attribute
attrString.addAttribute(NSAttributedStringKey.kern, value: 2, range: NSMakeRange(0, attrString.length))

label.attributedText = attrString

Введите его точно так же, как вы хотите, в любом текстовом редакторе, таком как TextEdit и т. Д., А затем вставьте текстовый раздел вашей метки в xib.

Но убедитесь, что высота вашего ярлыка больше подходит для содержимого, а также увеличьте количество строк. Для этого случая это может быть 3 или больше.

введите описание изображения здесь

Другие вопросы по тегам