我有自定义字体和大小的UITextFields。一切正常,直到我更改为Xcode 5以修复新iOS / Xcode的所有更改。现在当我检查我的UITextFields时,他们在占位符和编辑时有正确的字体,但是当我停止编辑时,字体大小会变大。那么为什么现在使用Xcode 5它不起作用?
屏幕截图:link
设置字体的代码没有改变:
[_eventName setFont:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:16]];
答案 0 :(得分:2)
您是否更改了UILabels的外观代理?我有一个类似的问题,看起来好像UITextField的文本在编辑完成后呈现为UILabel。覆盖我在UILabel上的外观代理设置为我解决了这个问题。
答案 1 :(得分:0)
现在你需要使用sizeWithAttributes:而现在需要使用NSDictionary。使用密钥UITextAttributeFont和您的字体对象传递对,如下所示:
[_eventName.text sizeWithAttributes:@{NSFontAttributeName:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:16]}]
答案 2 :(得分:0)
在表格中插入行时也遇到问题 - 表格单元格中的文本字段将使用UILabel代理字体,而不是字体属性上设置的字体。滚动屏幕然后重新打开将显示正确的字体。
我能解决这个问题的唯一方法是覆盖UITextField,添加一个自定义drawRect - 在这里我必须将self.font设置为nil,然后将self.font重置为我想要的值。
克里斯
答案 3 :(得分:0)
我有这个问题,就像chrisoneiota描述的那样,问题是UITextField在某些情况下使用了UILabel。我通过覆盖UITextField解决了这个问题,但是我没有实现drawInRect:
:
- (void)addSubview:(UIView *)view {
if ([view isKindOfClass:[UILabel class]]) {
UILabel *label = (UILabel *)view;
label.font = self.font;
}
[super addSubview:view];
}
这似乎运作良好。