Swift - цвет фона строки атрибута на следующей строке - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть метка, где я буду sh, чтобы показать некоторые слова в строке 1, а некоторые слова в строке 2. Я смог добиться этого, поместив "\ n" между строками. Слова в строке 2 - это приписанная строка с цветом фона, однако цвет фона начинается с первой строки.

Есть ли способ, я могу получить цвет фона только в строке 2?

Ниже приведен код:

let attributedString = NSMutableAttributedString(string: "Line 1 Text" ?? "")
let attributesForNonSelectedRow = [NSAttributedString.Key.font:UIFont.systemFont(ofSize: 14, weight: UIFont.Weight.semibold),NSAttributedString.Key.foregroundColor:UIColor(rgb: 0x707070),NSAttributedString.Key.backgroundColor:UIColor(rgb: 0xE5E5E5)]
let myTitle = NSAttributedString(string: " \n Line 2 Text", attributes: attributesForNonSelectedRow)
attributedString.append(myTitle)
searchTitleLabel.lineBreakMode = .byWordWrapping
searchTitleLabel.numberOfLines = 0
searchTitleLabel.attributedText = attributedString

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Я написал этот вопрос. Все, что мне нужно было сделать, это поместить «\ n» в конце строки 1, а не в начале строки 2, и это решило проблему с цветом фона.

let attributedString = NSMutableAttributedString(string: "Line 1 Text \n" ?? "")
let attributesForNonSelectedRow = [NSAttributedString.Key.font:UIFont.systemFont(ofSize: 14, weight: UIFont.Weight.semibold),NSAttributedString.Key.foregroundColor:UIColor(rgb: 0x707070),NSAttributedString.Key.backgroundColor:UIColor(rgb: 0xE5E5E5)]
let myTitle = NSAttributedString(string: "Line 2 Text", attributes: attributesForNonSelectedRow)
attributedString.append(myTitle)
searchTitleLabel.lineBreakMode = .byWordWrapping
searchTitleLabel.numberOfLines = 0
searchTitleLabel.attributedText = attributedString
0 голосов
/ 13 февраля 2020

Простое решение: - Просто добавьте / n в строке на одну строку - это решит проблему

let attributedString = NSMutableAttributedString(string: "Line 1 Text\n" ?? "")
let attributesForNonSelectedRow = [NSAttributedString.Key.font:UIFont.systemFont(ofSize: 14, weight: UIFont.Weight.semibold),NSAttributedString.Key.foregroundColor:UIColor(rgb: 0x707070),NSAttributedString.Key.backgroundColor:UIColor(rgb: 0xE5E5E5)]
let myTitle = NSAttributedString(string: "Line 2 Text", attributes: attributesForNonSelectedRow)
attributedString.append(myTitle)
searchTitleLabel.lineBreakMode = .byWordWrapping
searchTitleLabel.numberOfLines = 0
searchTitleLabel.attributedText = attributedString

Решение с помощью ограничений:

Почему бы вам просто не попытаться установить ограничения для метки, предоставив ограничения Leading, Top и Height, вы можете этого достичь ..

enter image description here enter image description here

...