编辑后UITextField上Xcode 5字体大小错误

3
我有一些带有自定义字体和大小的UITextFields。一切都很好,直到我改用Xcode 5来修复新iOS / Xcode的所有更改。现在当我检查我的UITextFields时,占位符和编辑时都有正确的字体,但是当我停止编辑时,字体大小会变大。那么为什么现在使用Xcode 5它不起作用了?
截图:link 设置字体的代码没有改变:
[_eventName setFont:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:16]];
4个回答

2

你是否对UILabel的外观代理进行了更改?我遇到了类似的问题,似乎在编辑完成后,UITextField的文本会呈现为UILabel。覆盖我的UILabel外观代理设置解决了这个问题。


我不确定为什么错过了这个答案,但是现在我来回答。那个项目是由其他开发人员启动的,我没有得到任何文档,所以我不确定,但我认为代理并没有被修改。我解决这个问题的方法是用自定义UITextViews替换所有UITextFields,并从UITextFields添加必要的功能。 - Tomáš Chylý

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];
}

这似乎运行良好。


0
现在你需要使用sizeWithAttributes:,它现在需要一个NSDictionary。像这样传递带有UITextAttributeFont键和字体对象的对:
[_eventName.text sizeWithAttributes:@{NSFontAttributeName:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:16]}]

那个“string”是什么?不确定如何使用它。这只在iOS7上工作吗? - Tomáš Chylý
尝试使用以下方式[_eventName.text sizeWithAttributes:@{NSFontAttributeName:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:16]}]; 但是这样不起作用,所以可能是错误的方法。 - Tomáš Chylý

0

在插入表格行时,我也遇到了一个问题 - 表格单元格中的文本字段将使用UILabel代理字体,而不是设置在其字体属性上的字体。 滚动屏幕并返回后,将显示正确的字体。

我唯一能够解决这个问题的方法是覆盖UITextField,添加自定义drawRect - 在这里,我必须将self.font设置为nil,然后将self.font重置为所需的值。

克里斯


我也是用类似的方法解决了这个问题,通过创建一个继承UITextView的自定义类并使其可编辑。但这只是一种建设性的答案,所以我会将其标记为正确答案。 - Tomáš Chylý

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接