tec*_*man 54 fonts objective-c uifont ios
我已经使用Interface Builder为UILabel中的文本指定了一个大小为14的自定义字体'Helvetica'.
我正在多个地方重复使用相同的标签,但在某些地方我必须以粗体显示文本.
有什么方法我可以指定使现有字体加粗而不是再次创建整个UIFont吗?这就是我现在所做的:
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14];
Run Code Online (Sandbox Code Playgroud)
Mak*_*ski 104
弄乱字体名称是一件多事.并且据说你有一个斜体字体,你想让它变得大胆 - 简单@"-Bold"
地添加到名称不起作用.还有更优雅的方式:
- (UIFont *)boldFontWithFont:(UIFont *)font
{
UIFontDescriptor * fontD = [font.fontDescriptor
fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
return [UIFont fontWithDescriptor:fontD size:0];
}
Run Code Online (Sandbox Code Playgroud)
size:0
意思是"保持描述符中的大小".UIFontDescriptorTraitItalic
如果需要获得斜体字体,可能会发现有用的特性
在Swift中,编写一个简单的扩展会很好:
extension UIFont {
func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
let descriptor = self.fontDescriptor().fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(traits))
return UIFont(descriptor: descriptor, size: 0)
}
func bold() -> UIFont {
return withTraits(.TraitBold)
}
func italic() -> UIFont {
return withTraits(.TraitItalic)
}
func boldItalic() -> UIFont {
return withTraits(.TraitBold, .TraitItalic)
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样使用它:
myLabel.font = myLabel.font.boldItalic()
myLabel.font = myLabel.font.bold()
myLabel.font = myLabel.font.withTraits(.TraitCondensed, .TraitBold, .TraitItalic)
Run Code Online (Sandbox Code Playgroud)
LE *_*ANG 84
更新:
从iOS 8开始,不再需要弄乱字体名称.相反,请查看更新的答案UIFontDescriptorSymbolicTraits
:此处和此处.
myLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];
Run Code Online (Sandbox Code Playgroud)
如果你想以编程方式设置它,你必须在iOS中检查粗体类型是否支持,通常Bold或Italic将具有FontName-Bold,FontName-Italic,FontName-BoldItalic格式.
现在,写一个大胆的功能
-(void)boldFontForLabel:(UILabel *)label{
UIFont *currentFont = label.font;
UIFont *newFont = [UIFont fontWithName:[NSString stringWithFormat:@"%@-Bold",currentFont.fontName] size:currentFont.pointSize];
label.font = newFont;
}
Run Code Online (Sandbox Code Playgroud)
然后打电话给它
[self boldFontForLabel:yourLabel];
Run Code Online (Sandbox Code Playgroud)
tha*_*rem 33
UIFont* boldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[myLabel setFont:boldFont];
Run Code Online (Sandbox Code Playgroud)
迅速扩展这个答案:
extension UIFont {
func bold() -> UIFont {
let descriptor = self.fontDescriptor().fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits.TraitBold)
return UIFont(descriptor: descriptor, size: 0)
}
}
Run Code Online (Sandbox Code Playgroud)
我们只需要正确的字体名称.我发现iOSFonts.com是确切知道要使用的名称的最有用的资源.
您可以使用FONT NAME"Arial-BoldItalicMT"设置Bold + ITALIC
它适用于每个案例:
[myLabel setFont:[UIFont fontWithName:@"Arial-BoldItalicMT" size:17]];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
93525 次 |
最近记录: |