Лучший ответ - это тот, который использует метод расширения .withTraits () от @Maksymilian Wojakowski
No Refunds No Returns
Сэр, сэр, как установить полужирный шрифт в стиле текстового
Рамани Хитеш
3
Это проблематично, поскольку вы используете фиксированное имя шрифта. Поскольку это может быть изменено, это не лучшее решение. Ответ Максимилиана Вояковского лучше и гораздо гибче.
Ray Wojciechowski
278
Не пытайтесь играть с названиями шрифтов. Используя дескриптор шрифта, вам не нужны имена:
UILabel * label = [[UILabel alloc] init]; // use your label object instead of thisUIFontDescriptor * fontD = [label.font.fontDescriptor
fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold
| UIFontDescriptorTraitItalic];
label.font = [UIFont fontWithDescriptor:fontD size:0];
Не знаю, почему это не набрало больше голосов! Это отлично подходит для шрифтов, у которых нет полужирного или курсивного начертания!
Крис Принс
4
Аааа. Я понимаю, почему, возможно, это не так популярно. Доступно только для iOS7 и более поздних версий ...
Крис Принс,
3
Не знаю, следует ли это рассматривать в рамках NDA, но с исходным кодом Xcode6 и iOS8 GM я возвращаю дескриптор шрифта nil для пользовательского шрифта, тогда как в iOS7 он не был нулевым.
Крис Принс
@Maksymilian можем ли мы отказаться от этого метода где-нибудь на нескольких этикетках, например: uitableview
Маджид Башир
2
Просто небольшое примечание, поскольку этот ответ очень полезен: return withTraits(.TraitBold, .TraitCondensed)вероятно, он return withTraits(.TraitBold, .TraitItalic)должен соответствовать имени функции.
Но вот большой вопрос, помимо использования fontWithName: @ "Arial-Light", как указать другие веса на вашем скриншоте? Все всплывает жирным шрифтомSystemFontSize (of: __), но что, если кому-то нужен легкий или сверхлегкий?
Dave G
6
У меня та же проблема, что нужно применить жирный и курсив к метке и кнопке. Вы можете просто использовать следующий код для достижения этого эффекта:
Как уже упоминалось в этих ответах, вам просто нужно правильное название шрифта . Я считаю, что iOSFonts.com - самый полезный ресурс, позволяющий точно узнать, какое имя использовать.
Хотя ответ @tolbard потрясающий и хорошо работает!
Я считаю, что создание расширения для чего-то, чего можно достичь с помощью одной строчки кода, было бы лишним.
Вы можете получить полужирный и курсивный стиль для того же текста в label, установив свойство шрифта , используя , UIFontDescriptorкак показано ниже в примере ниже , с помощью Swift 4.0 :
Часто полужирный текст рассматривается в информационной архитектуре на другом уровне и, следовательно, не выделяется жирным и регулярным шрифтом в одной строке, поэтому вы можете разделить его на две метки / текстовые представления, одну обычную и полужирный курсив. И используйте редактор, чтобы выбрать стили шрифта.
Ответы:
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];
Существует список названий шрифтов, которые вы можете установить вместо атрибута fontWithName. Ссылка находится здесь.
источник
Не пытайтесь играть с названиями шрифтов. Используя дескриптор шрифта, вам не нужны имена:
UILabel * label = [[UILabel alloc] init]; // use your label object instead of this UIFontDescriptor * fontD = [label.font.fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold | UIFontDescriptorTraitItalic]; label.font = [UIFont fontWithDescriptor:fontD size:0];
size:0
означает "сохранить размер как есть"В Swift попробуйте следующее расширение:
extension UIFont { func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont { let descriptor = self.fontDescriptor() .fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(traits)) return UIFont(descriptor: descriptor, size: 0) } func boldItalic() -> UIFont { return withTraits(.TraitBold, .TraitItalic) } }
Тогда вы можете использовать это так:
myLabel.font = myLabel.font.boldItalic()
или даже добавить дополнительные черты вроде Condensed:
myLabel.font = myLabel.font.withTraits(.TraitCondensed, .TraitBold, .TraitItalic)
Обновление для Swift 4:
extension UIFont { var bold: UIFont { return with(traits: .traitBold) } // bold var italic: UIFont { return with(traits: .traitItalic) } // italic var boldItalic: UIFont { return with(traits: [.traitBold, .traitItalic]) } // boldItalic func with(traits: UIFontDescriptorSymbolicTraits) -> UIFont { guard let descriptor = self.fontDescriptor.withSymbolicTraits(traits) else { return self } // guard return UIFont(descriptor: descriptor, size: 0) } // with(traits:) } // extension
Используйте его следующим образом:
myLabel.font = myLabel.font.bold
или
myLabel.font = myLabel.font.italic
или
myLabel.font = myLabel.font.with(traits: [ .traitBold, .traitCondensed ])
Обновление для Swift 5
extension UIFont { var bold: UIFont { return with(.traitBold) } var italic: UIFont { return with(.traitItalic) } var boldItalic: UIFont { return with([.traitBold, .traitItalic]) } func with(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont { guard let descriptor = self.fontDescriptor.withSymbolicTraits(UIFontDescriptor.SymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits)) else { return self } return UIFont(descriptor: descriptor, size: 0) } func without(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont { guard let descriptor = self.fontDescriptor.withSymbolicTraits(self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptor.SymbolicTraits(traits))) else { return self } return UIFont(descriptor: descriptor, size: 0) } }
источник
return withTraits(.TraitBold, .TraitCondensed)
вероятно, онreturn withTraits(.TraitBold, .TraitItalic)
должен соответствовать имени функции.@Edinator, посмотри на это ..
myLabel.font = [UIFont boldSystemFontOfSize:16.0f] myLabel.font = [UIFont italicSystemFontOfSize:16.0f];
используйте любой из вышеперечисленных одновременно, когда хотите
источник
Вы можете установить любой стиль шрифта, семейство, размер для метки, нажав на букву «T» в поле « Шрифт» .
источник
У меня та же проблема, что нужно применить жирный и курсив к метке и кнопке. Вы можете просто использовать следующий код для достижения этого эффекта:
myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];
источник
С системным шрифтом по умолчанию iOS 7 вы будете использовать полужирный шрифт helvetica neue, если хотите сохранить системный шрифт по умолчанию.
[titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];
Или вы можете просто назвать это:
[titleText setFont:[UIFont boldSystemFontOfSize:16.0]];
источник
Swift 3
Жирный:
let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)
Курсив:
let italicFont = UIFont.italicSystemFont(ofSize:UIFont.labelFontSize)
источник
btn.titleLabel.font=[UIFont fontWithName:@"Helvetica neue" size:10]; btn.titleLabel.font = [UIFont boldSystemFontOfSize:btnPrev.titleLabel.font.pointSize+3];
вы можете сделать жирный шрифт метки / кнопки, также используя этот
источник
Я сделал вариант ответа Максимилиана Вояковского, где вы можете добавить или удалить черту (-ы)
extension UIFont { func withTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont { let descriptor = self.fontDescriptor .withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits)) return UIFont(descriptor: descriptor!, size: 0) } func withoutTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont { let descriptor = self.fontDescriptor .withSymbolicTraits( self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptorSymbolicTraits(traits))) return UIFont(descriptor: descriptor!, size: 0) } func bold() -> UIFont { return withTraits( .traitBold) } func italic() -> UIFont { return withTraits(.traitItalic) } func noItalic() -> UIFont { return withoutTraits(.traitItalic) } func noBold() -> UIFont { return withoutTraits(.traitBold) } }
пример
label.font = label.font.italic().bold()
это полезно при повторном использовании ячейки, и вы хотите удалить курсив, который вы поставили на метке в предыдущей ячейке
источник
Недавно я написал сообщение в блоге об ограничениях UIFont API и способах их решения. Вы можете увидеть это здесь
С помощью кода, который я там предоставил, вы можете получить желаемый UIFont так же просто, как:
UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];
А затем установите его на свой UILabel (или что-то еще) с помощью:
myLabel.font = myFont;
источник
Как уже упоминалось в этих ответах, вам просто нужно правильное название шрифта . Я считаю, что iOSFonts.com - самый полезный ресурс, позволяющий точно узнать, какое имя использовать.
источник
Пример полужирного текста:
UILabel *titleBold = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)]; UIFont* myBoldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]]; [titleBold setFont:myBoldFont];
Пример курсивного текста:
UILabel *subTitleItalic = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 30)]; UIFont* myItalicFont = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]]; [subTitleItalic setFont:myItalicFont];
источник
Хотя ответ @tolbard потрясающий и хорошо работает!
Я считаю, что создание расширения для чего-то, чего можно достичь с помощью одной строчки кода, было бы лишним.
Вы можете получить полужирный и курсивный стиль для того же текста в
label
, установив свойство шрифта , используя ,UIFontDescriptor
как показано ниже в примере ниже , с помощью Swift 4.0 :label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)
Другие варианты включают:
Чтобы узнать больше о том, что означают эти символические черты? посетите здесь
источник
Обновление потрясающего ответа Максимилиана Войяковского для Swift 3
extension UIFont { func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont? { guard let descriptorL = self.fontDescriptor.withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits)) else{ return nil } return UIFont(descriptor: descriptorL, size: 0) } func boldItalic() -> UIFont? { return withTraits(traits: .traitBold, .traitItalic) } }
источник
Это очень просто. Вот код.
[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];
Это вам поможет.
источник
Просто хочу отметить это,
UIFont.systemFont(ofSize: 16, weight: UIFont.Weight.bold) UIFont.boldSystemFont(ofSize: 16)
У них другой исход ...
источник
Часто полужирный текст рассматривается в информационной архитектуре на другом уровне и, следовательно, не выделяется жирным и регулярным шрифтом в одной строке, поэтому вы можете разделить его на две метки / текстовые представления, одну обычную и полужирный курсив. И используйте редактор, чтобы выбрать стили шрифта.
источник
С Swift 5
label.font = UIFont(name:"HelveticaNeue-Bold", size: 15.0)
label.font = UIFont(name:"HelveticaNeue-Medium", size: 15.0)
label.font = UIFont(name:"HelveticaNeue-Thin", size: 15.0)
источник
Здесь хорошие ответы, но если вы хотите, чтобы метка соответствовала предпочтительной категории размера пользователя, используйте
preferredFont
.UIFont.systemFont(ofSize: UIFont.preferredFont(forTextStyle: .body).pointSize, weight: .bold)
источник