我该如何在iPhone/iPad的UILabel
上设置加粗和斜体?我在论坛上搜索过,但没有帮助到我。有人能帮帮我吗?
我该如何在iPhone/iPad的UILabel
上设置加粗和斜体?我在论坛上搜索过,但没有帮助到我。有人能帮帮我吗?
不要试图玩弄字体名称。使用字体描述符,您无需名称:
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)
以匹配函数名称。 - BreadicalMDsectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];
你可以在'fontWithName'属性的位置上设置字体名称列表。链接在这里
@Edinator看一下这个...
myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];
你可以在需要的时候使用上述任何一种。
Swift 3
加粗:
let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)
斜体:
let italicFont = UIFont.italicSystemFont(ofSize:UIFont.labelFontSize)
如果想使用iOS 7系统默认字体,您需要使用Helvetica Neue Bold。
[titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];
[titleText setFont:[UIFont boldSystemFontOfSize:16.0]];
我也遇到了同样的问题,需要在标签和按钮上同时应用加粗和斜体。您可以使用以下代码来实现此效果:
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()
当您重用单元格并希望删除先前单元格中标签上的斜体时,它非常有用。
示例粗体文本:
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];
label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)
traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded
想要了解这些符号特征的更多信息?点击这里。