我想在一些UITextViews中调整字体大小。这适用于插座集合和此代码:
for (UITextView *view in self.viewsToResize) {
if ([view respondsToSelector:@selector(setFont:)]) {
[view setFont:[UIFont systemFontOfSize:view.font.pointSize + 5]];
}
}
但我的问题是,并非每个textView都使用正常权重的systemFont,其中一些是粗体重的。是否有可能获得字体重量?在调试区域中po view.font
,我可以看到我需要的一切:
$11 = 0x0c596ea0 <UICFFont: 0xc596ea0> font-family: "Helvetica"; font-weight: normal; font-style: normal; font-size: 12px
但是如何访问font-weight?
对于大胆的视图使用第二个插座集合可以解决我的问题。但我想知道我没有发现任何东西只能得到字体重量。
答案 0 :(得分:5)
我已经弄清楚如何获得字体权重,你必须深入到核心文本:
let ctFont = font as CTFont
let traits = CTFontCopyTraits(ctFont)
let dict = traits as Dictionary
if let weightNumber = dict[kCTFontWeightTrait] as? NSNumber {
print(weightNumber.doubleValue)
}
享受!
答案 1 :(得分:3)
UIFont没有粗体/斜体/ ...属性,因此您必须仅依赖于字体名称。 如果您不知道将使用哪种字体,这将是一个问题。
如果您知道将使用例如。只有Helvetica你可以试试这个:
UIFont *font = textview.font;
if([font.fontName isEqualToString:@"Helvetica-Bold"])
NSLog(@"It's Bold!");
或者你可以在font.fontName中搜索单词“bold”/“medium”/“light”等,但这并不能保证你会得到每种可用字体的东西:
if ([font.fontName rangeOfString:@"bold" options:NSCaseInsensitiveSearch].location == NSNotFound) {
NSLog(@"font is not bold");
} else {
NSLog(@"font is bold!");
}
// if font.fontName contains "medium"....
// if font.fontName contains "italic"....
检查http://iosfonts.com/是否有可用的字体名称。
答案 2 :(得分:2)
但我的问题是,并非每个textView都使用systemFont 正常体重,其中一些是粗体重。
如果您想使用Bold System Font,那么您只需使用
即可[UIFont boldSystemFontOfSize:15.0];
但是,我仍在考虑您需要使用font-weight
。
更新:
UIFont
班级中没有任何内容可供您直接使用font-weight
。您可以查看UIFont Class Reference。
您唯一能做的就是获取font-name
并尝试找出字体名称中的“粗体”子字符串。如果发现任何匹配,则表示该特定字体的font-weight
为“粗体”。
但是,这仍然不是最有效的方法。
答案 3 :(得分:1)
您可以使用fontDescriptor方法获取字体的UIFontDescriptor。然后你得到UIFontDescriptor的fontAttributes字典,从字典中获取UIFontDescriptorTraitsAttribute,返回另一个字典,然后从该字典中读取UIFontWeightTrait。没有测试过。
现在它经过测试:不起作用。 fontAttributes总是返回一个字典,其中包含两个字体名称和字体大小的键,以及它的字体。我想&#34;这不起作用&#34;当某些事情应该根据文件......
时也是一个答案你可以试试symbolicTraits,但这也没用:它返回&#34;粗体&#34;仅当整个字体系列为粗体时。