ios swift: можно ли изменить стиль шрифта определенного слова в строке?
14149 просмотра
3 ответа
Я извлекаю из БД содержимое в виде строк. С помощью метода я извлекаю самое длинное слово из этой строки.
Теперь я хотел бы распечатать всю строку на текстовой метке, но хотел бы выделить самое длинное слово в другом цвете и стиле текста в строке.
Как я могу это сделать? Нужно ли разрезать строку на части - установить форматирование - и снова соединить их все вместе, прежде чем отдать на этикетку?
Или есть какой-то другой (лучший) способ?
Автор: user1555112 Источник Размещён: 12.11.2019 10:01Ответы (3)
24 плюса
Если вы уже знаете самое длинное слово, вы должны получить диапазон этого слова в строке. Я предпочитаю метод NSString rangeOfString:
для этого.
Затем вы создаете NSMutableAttributedString
из строки атрибуты по умолчанию. Наконец, вы применяете атрибуты выделения к диапазону, который вы выяснили ранее.
let longString = "Lorem ipsum dolor. VeryLongWord ipsum foobar"
let longestWord = "VeryLongWord"
let longestWordRange = (longString as NSString).rangeOfString(longestWord)
let attributedString = NSMutableAttributedString(string: longString, attributes: [NSFontAttributeName : UIFont.systemFontOfSize(20)])
attributedString.setAttributes([NSFontAttributeName : UIFont.boldSystemFontOfSize(20), NSForegroundColorAttributeName : UIColor.redColor()], range: longestWordRange)
label.attributedText = attributedString
Который выглядит так на моей детской площадке:
2 плюса
Вы хотите посмотреть на Attributed Strings и NSRange. Вы можете использовать оба из них вместе, чтобы создать различные стили для диапазонов в строке. Вот фрагмент:
myMutableString = NSMutableAttributedString(string: myString, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 18.0)!])
//Add more attributes here:
myMutableString.addAttribute(NSFontAttributeName, value: UIFont(name: "Chalkduster", size: 24.0), range: NSRange(location: 7,length: 5))
myMutableString.addAttribute(NSFontAttributeName, value: UIFont(name: "AmericanTypewriter-Bold", size: 18.0)!, range: NSRange(location:2,length:4))
myMutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: NSRange(location:2,length:4))
myMutableString.addAttribute(NSFontAttributeName, value: UIFont(name: "Georgia", size: 36.0)!, range: NSRange(location: 0, length: 1))
myMutableString.addAttribute(NSStrokeColorAttributeName, value: UIColor.blueColor(), range: NSRange(location: 0, length: 1))
myMutableString.addAttribute(NSStrokeWidthAttributeName, value: 2, range: NSRange(location: 0, length: 1))
myMutableString.addAttribute(NSBackgroundColorAttributeName, value: UIColor.greenColor(), range: NSRange(location: 0, length: myString.length))
myLabel.backgroundColor = UIColor.grayColor()
//Apply to the label
myLabel.attributedText = myMutableString
Автор: Chackle
Размещён: 20.03.2015 11:34
0 плюса
NSMutableAttributedString.
Вы создаете NSMutableAttributedString
и применяете нужные эффекты addAttributes:range
.
Затем назначьте его на attributedText
собственность вашего UILabel
.
Вопросы из категории :
- ios Приложение для iPhone в ландшафтном режиме, системы 2008
- ios Как мне дать моим веб-сайтам значок для iPhone?
- ios Как программно отправить смс на айфон?
- ios Как я могу разработать для iPhone, используя машину для разработки Windows?
- ios Tips for a successful AppStore submission?
- ios Как мне определить размер UITextView для его содержимого?
- ios iPhone viewWillAppear не стреляет
- ios Как показать индикатор загрузки в верхней строке состояния
- ios Как сохранить картинку в фотобиблиотеку iPhone?
- ios Как отключить выбор UITableView?
- swift Как я могу программным образом определить, работает ли мое приложение в симуляторе iphone?
- swift iOS: Convert UTC NSDate to local Timezone
- swift Как установить цель и действие для UIBarButtonItem во время выполнения
- swift Жирный и не жирный текст в одном UILabel?
- swift Найти касательную точки на кубической кривой безье
- swift Как я могу рассчитать разницу между двумя датами?
- swift How to get text / String from nth line of UILabel?
- swift Можно ли программно прокрутить до нужной строки в UIPickerView?
- swift Отключение клавиатуры в UIScrollView
- swift Как контролировать межстрочный интервал в UILabel