【发布时间】:2012-01-21 21:38:17
【问题描述】:
有一个带有任何字体的UILabel,我怎样才能知道它是否已经是粗体?或者我怎样才能让它变得大胆?在 CSS 中,我有一个 font-weight 属性。我想要类似的东西。
到目前为止,我发现的一切都是您必须设置正确的字体名称。然而,这是不可靠的。 Cochin 的粗体版本是Cochin-Bold,但ArialMT 的粗体版本不是ArialMT-Bold 而是Arial-BoldMT,所以显然追加-Bold 是不够的。 (自定义字体的粗体版本也可以有一个完全不同的名称)。
我能做的是找到我给定字体系列的所有字体。
__block UIFont *font = myLabel.font;
[[UIFont fontNamesForFamilyName:font.familyName] enumerateObjectsUsingBlock:^(NSString *fontName, NSUInteger idx, BOOL *stop) {
if ([fontName rangeOfString:@"bold" options:NSCaseInsensitiveSearch].location != NSNotFound) {
font = [UIFont fontWithName:fontName size:font.pointSize];
*stop = YES;
}
}];
myLabel.font = font;
但这并不可靠。我可以轻松获得BoldItalic 版本。我可以改进我的检查来避免这种情况,但这并不是一个好的解决方案。
也许 CoreText 可以在这里提供帮助?
【问题讨论】:
标签: ios objective-c iphone uifont