Answers:
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()
甚至添加其他特征,例如浓缩:
myLabel.font = myLabel.font.withTraits(.TraitCondensed, .TraitBold, .TraitItalic)
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 ])
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];
您想一次使用以上任何一种
我有一个相同的问题,需要在标签和按钮上同时使用粗体和斜体。您可以简单地使用以下代码来实现此效果:
myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];
我对maksymilian wojakowski的响应进行了修改,您可以在其中添加或删除特征
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()
在重复使用单元格并且您想删除在上一个单元格中贴在标签上的斜体时非常有用
正如这些答案中已经提到的那样,您只需要正确的字体名称即可。我发现 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提供的答案是惊人的,并且效果很好!
我觉得为仅用一行代码即可实现的事情创建扩展将是一个致命的挑战。
通过使用以下Swift 4.0中的示例所示设置font属性,可以为您的相同文本获得粗体以及斜体样式: label
UIFontDescriptor
label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)
其他选项包括:
traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded
有关这些符号特征含义的更多信息?拜访这里
更新Maksymilian Wojakowski对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];
这将为您提供帮助。
很多时候,粗体文本是在信息体系结构的另一层上考虑的,因此一行中没有粗体和常规,因此您可以将其拆分为两个标签/文本视图,一个常规和粗体斜体。并使用编辑器选择字体样式。