2009-04-30 2 views
4

Возможно ли установить расстояние UILabel между линией, так как у меня UILabel содержит 3 строки, а linebreakmode - wordwrap?Можно ли установить расстояние UILabel между линией?

+0

http://stackoverflow.com/questions/3880526/how- к увеличению-а-пространство-между-два линии-в-многострочных метки –

ответ

6

Если вы имеете в виду «ведущий», который относится к разрыву между строками типа, вы не можете изменить это на UILabel. Это выведено из передней части самой метки. Некоторые люди пытались создать категории, чтобы переопределить «ведущее» свойство UIFont для метки, но на самом деле это не работает при рендеринге.

Если вам действительно нужно контролировать вертикальное расстояние между строками текста, то лучше всего программно сбросить 1 UILabel на линию фиксированной ширины и самостоятельно контролировать вертикальный зазор.

0

Вот как вы можете установить межстрочный интервал с помощью конструктора интерфейсов и программно.

От Interface Builder:

enter image description here

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

Свифт 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 = "is\nit\npossible\nto\nset\nthe\nUILabel\ndistance\nbetween\nthe\nline?" 

// 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 = "is\nit\npossible\nto\nset\nthe\nUILabel\ndistance\nbetween\nthe\nline?" 
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 
Смежные вопросы