编辑后 UITextField 上的 Xcode 5 字体大小错误
Posted
技术标签:
【中文标题】编辑后 UITextField 上的 Xcode 5 字体大小错误【英文标题】:Xcode 5 wrong font size on UITextField after editing 【发布时间】: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]];
【问题讨论】:
【参考方案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];
这似乎运作良好。
【讨论】:
以上是关于编辑后 UITextField 上的 Xcode 5 字体大小错误的主要内容,如果未能解决你的问题,请参考以下文章