Почему в моей преобразованной HTML-строке отображается только первая строка?

#html #ios #swift #nsattributedstring

#HTML #iOS #swift #nsattributedstring

Вопрос:

Я предпринял попытку преобразовать html код в an attributed string , который затем используется в ярлыке. Но по какой-то причине отображается только самая первая строка: «Прежде чем продолжить:» Все остальное пустое. Я расширил label ограничения, чтобы заполнить весь экран, чтобы убедиться, что с этим нет проблем. Этот html фрагмент был протестирован android и работает нормально.

 let mystring = """
        <body>
            <p><b>Before proceeding:</b></p>
            <ul type="dash">
                <li>Save a backup copy of the door configuration file</li><li>Disconnect all other devices</li></ul>
            <p><b>During upgrade:</b></p>
            <ul type="dash">
                <li>Do not turn off phone</li>
            </ul>
            <p><b>Are you sure you want to upgrade?</b></p>
            </body>
        """

var attrString: NSAttributedString? {
    guard let data = mystring.data(using: .utf8) else { return nil }
    do {
        return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding:String.Encoding.utf8.rawValue], documentAttributes: nil)
    } catch {
         return nil
    }
}
         
mylabel.attributedText = attrString
 

Есть ли что-нибудь, что я пропустил?

Комментарии:

1. Вы установили количество строк = 0 на своем ярлыке?

2. боже, спасибо, это было так, ЛОЛ

Ответ №1:

Это может быть не совсем очевидно, но…

Сначала может показаться, что Number of Lines свойство a UILabel позволяет переносить слова, когда текст достаточно длинный.

Однако…

Number of Lines Свойство a UILabel также управляет количеством отображаемых строк, даже если в тексте есть встроенные символы новой строки.

Настройка mylabel.numberOfLines = 0 устранит проблему.