Прошу прощения, если это очевидно, но я искал некоторое время, и это меня озадачивает.
У меня есть NSAttributedString, которая содержит:
1) "Заполнениеthe-blank "-esque подстрока состоит из неразрывных пробелов со стилем подчеркивания, примененным к этой подстроке (например," \ u {00a0} \ u {00a0} \ u {00a0} "со стилем подчеркивания, примененным только к этой подстроке;Первоначально я использовал подчеркивания, но пробел между ними был проблематичным, так как мой текст имеет непрозрачность, поэтому вы можете видеть пробел или перекрытие)
2) несколько разрывов строк в конце строки с возможностью заполнения.в пустом поле (например, "... \ na) первый выбор \ nb) второй выбор \ nc) последний выбор")
Затем я отображаю эту строку NSAttributedString в метке, для которой numberOfLines установлено в 0.
Это прекрасно работает в 90% случаев, за исключением 10% случаев, когда неразрывная «заливка в пустую» появляется на расстоянии переноса от конца строки, что означает, что она перемещаетсяк пстрока ext (как и ожидалось), которая выталкивает весь остальной текст вперёд, и если в абзаце происходит достаточное нажатие, она полностью выталкивает окончательную строку выбора (например, «\ nc) последний выбор») из метки, так чтоне отображается последняя строка строки !?Другими словами, мой ярлык SEEMS рассчитывает, насколько большим он должен быть до применения неразрывных пробелов, поэтому, если затем создаются неразрывные пробелы / подстроки, последняя строка обрезается и не отображается ввсе.
Есть ли какой-то другой способ создать или приписать эту неразрывную «заливку в пустую», чтобы она не переносилась по символам (то есть сохраняла все в одной строке), номой ярлык поймет / пересчитает, что дополнительные строки были созданы с помощью указанного отсутствия переноса?Как я уже упоминал, на моем ярлыке уже установлено значение numberOfLines, равное 0;возможно, есть какой-то стиль абзаца или другая настройка метки, которую я не смог найти?Или это просто ошибка Swift, но кто-то знает обходной путь?
Ниже приведены некоторые фрагменты из моего кода:
let underlineString = "\u{00a0}\u{00a0}\u{00a0}\u{00a0}\u{00a0}"
let myTextAttributes = [NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue): UIFont(name: "My Font", size: round(self.view.frame.width / 15)) as Any, NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue): UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 0.9)]
let myLabel = UILabel()
myLabel.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
myLabel.textAlignment = .center
myLabel.numberOfLines = 0
var myText = "What do you think about \u{00a0}\u{00a0}\u{00a0}\u{00a0}\u{00a0} and then what about this extra stuff at the end?\na) first choice\nb) second choice\nc) last choice"
var myAttributedText = NSMutableAttributedString(string:myText, attributes: myTextAttributes)
myAttributedText.addAttribute(NSAttributedStringKey.underlineStyle, value: NSUnderlineStyle.styleThick.rawValue, range: (myText as NSString).range(of:underlineString))
myLabel.attributedText = myAttributedText
self.view.addSubview(myLabel)
myLabel.translatesAutoresizingMaskIntoConstraints = false
myLabel.heightAnchor.constraint(equalToConstant: self.view.frame.height).isActive = true
myLabel.widthAnchor.constraint(equalToConstant: self.view.frame.width).isActive = true
myLabel.centerXAnchor.constraint(equalTo: myLabel.superview!.centerXAnchor).isActive = true
myLabel.centerYAnchor.constraint(equalTo: myLabel.superview!.centerYAnchor).isActive = true
Большое вам спасибо за ваше время!