Как увеличить межстрочный интервал в UILabel в Swift 4

Я хочу увеличить межстрочный интервал в UILabel, но не могу понять, как это сделать.

Я нашел это решение [https://stackoverflow.com/a/39158698/8633963] в Stackoverflow, но мой Xcode всегда отображает это:

Use of unresolved identifier 'NSParagraphStyleAttributeName'

Я думаю, что ответ правильный, но это не сработало для меня. Кто-нибудь может помочь с этой проблемой?


person Enes    schedule 21.04.2018    source источник
comment
Ответ находится в упомянутой ссылке SO. Вы смотрели на ответ других? stackoverflow.com/a/39158698/8633963 Мнение. Вместо того, чтобы определять программно, лучше сделать то же самое из построителя интерфейсов.   -  person Mani    schedule 21.04.2018


Ответы (4)


В Swift 4 в этом случае вы должны использовать NSAttributedStringKey.paragraphStyle вместо NSParagraphStyleAttributeName

person schmidt9    schedule 21.04.2018

Свифт 5

import UIKit

extension UILabel {
    
    func setLineHeight(lineHeight: CGFloat) {
        let text = self.text
        if let text = text {
            let attributeString = NSMutableAttributedString(string: text)
            let style = NSMutableParagraphStyle()
            
            style.lineSpacing = lineHeight
            attributeString.addAttribute(NSAttributedString.Key.paragraphStyle, value: style, range: NSMakeRange(0, attributeString.length))
            self.attributedText = attributeString
        }
    }

}
person Dzhek    schedule 10.07.2020

Это сработало для меня.

import UIKit

    extension UILabel {

        func setLineHeight(lineHeight: CGFloat) {
            let text = self.text
            if let text = text {
                let attributeString = NSMutableAttributedString(string: text)
                let style = NSMutableParagraphStyle()

                style.lineSpacing = lineHeight
                attributeString.addAttribute(NSParagraphStyleAttributeName, value: style, range: NSMakeRange(0, count(text)))
                self.attributedText = attributeString
            }
        }
    }
person Fahad Azeem    schedule 20.11.2019

Проверьте это смехотворно простое решение, которое работает!

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CommentTVCCell

    // Configure the cell...


    cell.myLabel?.text = "\n[\(indexPath.row + 1)]\n\n" + itemArray[indexPath.row].name

    //

    return cell 
}

//Обратите внимание на использование \n для загрузки возврата или столько, сколько хотите. Убедитесь, что они находятся в пределах обозначения строки.

person Glenn Tisman    schedule 07.01.2019
comment
Я собираюсь пойти на риск, чтобы сказать, что OP не хотел решения с использованием TableView - person Chucky; 14.06.2021