【问题标题】:Xcode 5 wrong font size on UITextField after editing编辑后 UITextField 上的 Xcode 5 字体大小错误
【发布时间】:2013-09-27 08:12:43
【问题描述】:

我有自定义字体和大小的 UITextFields。一切正常,直到我更改为 Xcode 5 以使用新的 iOS/Xcode 修复所有更改。现在,当我检查我的 UITextFields 时,它们在占位符和编辑时都有正确的字体,但是当我停止编辑时,字体大小会变大。那么为什么现在使用 Xcode 5 就不行了呢?

截图:link

设置字体的代码没有改变:

[_eventName setFont:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:16]];

【问题讨论】:

    标签: ios xcode ios7 xcode5


    【解决方案1】:

    您是否对 UILabel 的外观代理进行了更改?我有一个类似的问题,它看起来好像 UITextField 的文本在编辑完成后呈现为 ​​UILabel。在 UILabel 上覆盖我的外观代理设置为我解决了这个问题。

    【讨论】:

    • 不知道我是怎么错过这个答案的,但我走了。该项目是由其他开发人员启动的,我没有得到任何文档,所以我不确定,但我认为代理没有被修改。我解决这个问题的方法是用自定义 UITextViews 替换所有 UITextFields,在其中我从 UITextFields 添加了必要的功能。
    【解决方案2】:

    在表格中插入行时我也遇到了问题 - 表格单元格中的文本字段将使用 UILabel 代理字体,而不是其字体属性上设置的字体。滚出屏幕再重新打开会显示正确的字体。

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

    克里斯

    【讨论】:

    • 我通过创建自己的扩展 UITextView 的类来解决这个问题,该类可以编辑。但这只是建设性的答案,所以我将其标记为正确。
    【解决方案3】:

    现在你需要使用 sizeWithAttributes: 代替,它现在需要一个 NSDictionary。使用键 UITextAttributeFont 和您的字体对象传递对,如下所示:

    [_eventName.text sizeWithAttributes:@{NSFontAttributeName:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:16]}]
    

    【讨论】:

    • 那个“字符串”是什么?不知道如何使用它。这也仅适用于 iOS7 吗?
    • 试过这样使用 [_eventName.text sizeWithAttributes:@{NSFontAttributeName:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:16]}];但这不起作用,所以可能是错误的方式。
    【解决方案4】:

    我遇到了这个问题,就像 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];
    }
    

    这似乎运作良好。

    【讨论】:

      猜你喜欢
      • 2012-07-17
      • 1970-01-01
      • 2011-03-18
      • 2014-07-04
      • 1970-01-01
      • 2013-06-30
      • 2014-02-15
      • 2012-03-10
      • 1970-01-01
      相关资源
      最近更新 更多