当我在UILabel
上以类似方式设置字体时,有时它完全符合我的要求,但是对于某些字体,它也会改变字体大小。这是不可取的。这是我的代码:
+(void)setFontFamily:(NSString*)fontFamily forView:(UIView*)view andSubViews:(BOOL)isSubViews {
if ([view isKindOfClass:[UILabel class]] ||
[view isKindOfClass:[UITextField class]] ||
[view isKindOfClass:[UIButton class]]) {
UILabel *lbl = (UILabel *)view;
[lbl setFont:[UIFont fontWithName:fontFamily size:[[lbl font] pointSize]]];
}
if (isSubViews) {
for (UIView *sview in view.subviews) {
[self setFontFamily:fontFamily forView:sview andSubViews:YES];
}
}
}
几个月前我从SO
的答案中复制了这个。到目前为止它一直有效,但某些字体似乎不在某些font sizes
之下。例如,我有一个名为KozGoPro-ExtraLight
的字体,当我将其设置为大小为12的标签时,它仍然是,但更改字体。我有字体KozGoP6N-Light
(它出现在同一个包中),当我应用这个时,我的标签的font size
从12变为17(17以下的任何数字变为17)。
为什么会这样?它与我正在使用的代码有关,还是Apple的另一个怪癖?我可以修理它,例如我可以更改代码,以便在不能更改字体的同时不会提高字体大小吗?
如果我记录以下行,这就是我得到的
NSLog(@"before:\n %@\n%f\n%f",[UIFont fontWithName:fontFamily size:[[lbl font] pointSize]],[[lbl font] pointSize],[lbl minimumScaleFactor]);
//set new font
NSLog(@"after:\n %@\n%f\n%f",[UIFont fontWithName:fontFamily size:[[lbl font] pointSize]],[[lbl font] pointSize],[lbl minimumScaleFactor]);
日志:
2014-09-19 12:37:06.287 rendezvouswebrtcbullshittestproject[876:60b] before:
<UICTFont: 0x1559d4e0> font-family: "KozGoPro-ExtraLight"; font-weight: normal; font-style: normal; font-size: 15.00pt
15.000000
0.000000
2014-09-19 12:37:06.288 rendezvouswebrtcbullshittestproject[876:60b] after:
<UICTFont: 0x1559d4e0> font-family: "KozGoPro-ExtraLight"; font-weight: normal; font-style: normal; font-size: 15.00pt
15.000000
0.000000
2014-09-19 12:37:06.296 rendezvouswebrtcbullshittestproject[876:60b] before:
<UICTFont: 0x156a0930> font-family: "KozGoPr6N-Light"; font-weight: normal; font-style: normal; font-size: 15.00pt
15.000000
0.000000
2014-09-19 12:37:06.297 rendezvouswebrtcbullshittestproject[876:60b] after:
<UICTFont: 0x156a0930> font-family: "KozGoPr6N-Light"; font-weight: normal; font-style: normal; font-size: 15.00pt
15.000000
0.000000