Cocoa touch 自定义UITextField模糊文本

Cocoa touch 自定义UITextField模糊文本,cocoa-touch,uitextfield,Cocoa Touch,Uitextfield,当具有自定义帧(200×54像素)的UITextField失去焦点时,文本看起来模糊 (来源:) 这是一个普遍的问题吗?有没有已知的解决方法?我在谷歌上找到了很多关于这个bug的参考资料,但每个人都通过使用字体大小来解决这个问题。经过多次搜索,我发现当视图的帧包含分数像素值时,例如,如果将其大小计算为超级视图的分数,则会应用抗锯齿 果然,将视图框架的CGRect值强制转换为int,效果非常好。例如,如果希望文本字段在superview中垂直居中,则应使用int强制转换,如下所示: textFi

当具有自定义帧(200×54像素)的UITextField失去焦点时,文本看起来模糊


(来源:)


这是一个普遍的问题吗?有没有已知的解决方法?

我在谷歌上找到了很多关于这个bug的参考资料,但每个人都通过使用字体大小来解决这个问题。经过多次搜索,我发现当视图的帧包含分数像素值时,例如,如果将其大小计算为超级视图的分数,则会应用抗锯齿

果然,将视图框架的
CGRect
值强制转换为
int
,效果非常好。例如,如果希望文本字段在superview中垂直居中,则应使用
int
强制转换,如下所示:

textFieldWidth = 300;
textFieldHeight = 31;
offsetX = 0;
offsetY = (superview.bounds.size.height - textFieldHeight) / 2;

textField.frame = CGRectMake((int) offsetX,
                             (int) offsetY,
                             (int) textFieldWidth,
                             (int) textFieldHeight);

还有
CGRectIntegral
函数,您可以使用它将
CGRect
转换为整数值。

非常感谢您的回答,这似乎是最好的解决方案。我在Interface Builder中也看到过这种情况。我一定要检查大小,以确保它们不包含分数。我的解决方案是重新创建按钮,这是跛脚的。但这很容易做到,只需单击按钮,按住option键,然后将其拖动过来。这将创建一个与上一个按钮相同的新按钮,但具有适当的抗锯齿。之后剩下要做的就是连接你的行动和出口并重新定位。哦,删除旧按钮。:)