Cam*_*mer 44
没有理由使用Core Text,你可以简单地向UIFont询问fontDescriptor.
UIFont *font = [UIFont boldSystemFontOfSize:17.0f];
UIFontDescriptor *fontDescriptor = font.fontDescriptor;
UIFontDescriptorSymbolicTraits fontDescriptorSymbolicTraits = fontDescriptor.symbolicTraits;
BOOL isBold = (fontDescriptorSymbolicTraits & UIFontDescriptorTraitBold) != 0;
Run Code Online (Sandbox Code Playgroud)
展望未来,这可能是询问字体特征的最简单方法.
omz*_*omz 35
查看字体的名称并不总是有效.考虑字体"Courier Oblique"(斜体)或"HoeflerText-Black"(粗体),它们的名称中都不包含"粗体"或"斜体".
给定一个字体作为a CTFontRef,确定它是粗体还是斜体的正确方法是使用该CTFontGetSymbolicTraits函数:
CTFontRef font = CTFontCreateWithName((CFStringRef)@"Courier Oblique", 10, NULL);
CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(font);
BOOL isItalic = ((traits & kCTFontItalicTrait) == kCTFontItalicTrait);
BOOL isBold = ((traits & kCTFontBoldTrait) == kCTFontBoldTrait);
NSLog(@"Italic: %i Bold: %i", isItalic, isBold);
CFRelease(font);
Run Code Online (Sandbox Code Playgroud)
Arj*_*jan 34
如果你想用Swift 2.0做到这一点:
extension UIFont {
var isBold: Bool {
return fontDescriptor().symbolicTraits.contains(.TraitBold)
}
var isItalic: Bool {
return fontDescriptor().symbolicTraits.contains(.TraitItalic)
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
let font: UIFont = UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)
if font.isBold {
print("it's bold..")
}
Run Code Online (Sandbox Code Playgroud)
回答斯威夫特3/4基于阿尔扬的回答:
extension UIFont {
var isBold: Bool {
return fontDescriptor.symbolicTraits.contains(.traitBold)
}
var isItalic: Bool {
return fontDescriptor.symbolicTraits.contains(.traitItalic)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7261 次 |
| 最近记录: |