Установить максимальное количество строк в NSMutableAttributedString - PullRequest
0 голосов
/ 04 ноября 2018

Я использую две NSMutableAttributedString и делаю одну NSMutableAttributedString из этих двух. Я хочу ограничить разное количество макс строк для обоих приписанныхString. Я много искал, но ничего не нашлось, и хороший вариант.

let linkTitleAttributed = NSMutableAttributedString(string: message.getLinkTitle() ?? "" , attributes: [NSFontAttributeName: UIFont.systemFontOfSize(19.0)])
//linkTitleAttributed should be maximum 2 lines.

let linkDescAttributed = NSAttributedString(string: message.getLinkDescription() ?? "", attributes: [NSFontAttributeName: UIFont.systemFontOfSize(15.0)])
//linkDescAttributed should be maximum 5 lines.

 let finalAttributed = NSMutableAttributedString()
        final.append(linkTitleAttributed)
        final.append(linkDescAttributed)

Если тексту дается больше строк, то он должен заканчиваться словами "Lorem Ipsum - просто фиктивный текст ..."

У меня на уме одно решение (установить независимый вид текста и получить видимый диапазон), но я ищу лучшее. Спасибо.

1 Ответ

0 голосов
/ 05 ноября 2018

Вы должны обработать строки для вашего заголовка и описания, а затем создать новый NSAttributedString. Что-то вроде:

func limitNumLines(_ msg: String, max: Int) -> String{
    if max <= 0 { return "" }

    let lines = msg.components(separatedBy: "\n")

    var output = ""
    for i in 0..<max {
        output += lines[i] + "\n"
    }
    return output
}

let titleMessage = "LINE1\nLINE2\nLINE3\nLINE4"
let descMessage = "line1\nline2\nline3\nline4\nline5\nline6"

//linkTitleAttributed (that is, message) should be maximum 2 lines.
let title = limitNumLines(titleMessage, max: 2)
let linkTitleAttributed = NSMutableAttributedString(string: title , attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 19.0)])

//linkDescAttributed should be maximum 5 lines.
let desc = limitNumLines(descMessage, max: 5)
let linkDescAttributed = NSAttributedString(string: desc , attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 15.0)])


let finalAttributed = NSMutableAttributedString()
finalAttributed.append(linkTitleAttributed)
finalAttributed.append(linkDescAttributed)
...