У меня есть такая строка
var str = "@text1 this is good @text1"
Теперь замените text1
, скажем, другой строкой t 1
. Я могу заменить текст, но не могу выделить его жирным шрифтом. Я хочу t 1
выделить новую строку жирным шрифтом , чтобы окончательный результат был таким:
@t 1 это хорошо @t 1
Как мне это сделать?
Все примеры, которые я вижу, относятся к Objective-C, но я хочу сделать это на Swift.
Заранее спасибо.
ios
swift
ios8
nsmutableattributedstring
user2413621
источник
источник
Ответы:
Использование:
Результат:
Вот изящный способ объединить жирный и нормальный текст на одной этикетке, а также некоторые другие бонусные методы.
Расширение: Swift 5. *
источник
func bold(_ text:String, _ size:CGFloat)
. Я добавил размер жирному шрифту, чтобы я мог управлять им извне. Кроме того, я пропустилAvenirNext-Medium
шрифт в этой функции, поэтому мне потребовалось несколько минут, чтобы понять, почему я не вижу свой шрифт. Берегись.Если вы хотите назначить его метке:
источник
изменить / обновить: Xcode 8.3.2 • Swift 3.1
Если вы знаете HTML и CSS, вы можете использовать его, чтобы легко управлять стилем шрифта, цветом и размером вашей строки с атрибутами, как показано ниже:
источник
<link href=\"https://fonts.googleapis.com/css?family=Frank+Ruhl+Libre\" rel=\"stylesheet\"> <span style=\"font-family: 'Frank Ruhl Libre', sans-serif;\">שלום</span>
Если вы работаете с локализованными строками, возможно, вы не сможете рассчитывать на то, что жирная строка всегда находится в конце предложения. В этом случае хорошо работает следующее:
например, запрос "blah" не соответствует ни одному элементу
источник
Это лучший способ, который я придумал. Добавьте функцию, которую вы можете вызывать из любого места, и добавьте ее в файл без класса, такого как Constants.swift, а затем вы можете придавать смелости словам в любой строке во многих случаях, вызывая только ОДНУ СТРОКУ кода:
Чтобы войти в файл constants.swift:
Затем вы можете просто вызвать эту строку кода для любого UILabel:
источник
Я расширил отличный ответ Дэвида Уэста, чтобы вы могли ввести строку и указать все подстроки, которые вы хотели бы придать смелости:
А потом назовите это так:
Это придаст смелости всем подстрокам, которые вы хотите выделить в данной строке жирным шрифтом.
источник
Основываясь на отличных ответах Джереми Бадера и Дэвида Уэста, расширение Swift 3:
Использование:
источник
использование....
два цента ...
источник
Swift 4 и выше
Для Swift 4 и выше это хороший способ:
Текст на этикетке выглядит так: «Привет, Джон ».
источник
Принимая ответ Prajeet Shrestha в этой ветке как действительный , я хотел бы расширить его решение, используя метку, если она известна, и особенности шрифта.
Swift 4
источник
Супер простой способ сделать это.
Для получения более подробной информации нажмите здесь: https://github.com/iOSTechHub/AttributedString
источник
apply
метод с желаемым шрифтомЭто может быть полезно
источник
Swift 3.0
Преобразуйте html в строку и измените шрифт в соответствии с вашими требованиями.
источник
Data("I'm a normal text and <b>this is my bold part . </b>And I'm again in the normal text".utf8)
и установить кодировку символов в параметрах[NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue]
Для -> Искать телевизор по размеру
Одностороннее использование NString и его диапазона
другой без использования NString и его диапазона
swift5
источник
Просто используйте код примерно так:
источник
два лайнера в swift 4:
источник
Swift 5.1 используйте
NSAttributedString.Key
вместоNSAttributedStringKey
источник
Улучшение ответа Праджита Шрестхи:
Вы можете сделать универсальное расширение для NSMutableAttributedString, которое требует меньше кода. В этом случае я решил использовать системный шрифт, но вы можете адаптировать его, чтобы вы могли ввести имя шрифта в качестве параметра.
источник
Вы можете сделать это, используя простой пользовательский метод, описанный ниже. Вы указали всю строку в первом параметре, а текст во втором параметре должен быть жирным. Надеюсь, это поможет.
использование: initalString = Я мальчик
label.attributedText = getAttributedBoldString (str: initalString, boldTxt: "Мальчик")
результирующая строка = Я мальчик
источник