从iOS 4到iOS 5,UITextField的背景行为发生了改变。

8
在我的应用程序中,我有一个UITextField位于背景图像的上方。在iOS 4下,我必须将backgroundColor属性设置为'clearColor'才能使其看起来正确。在iOS 4下,textfield如下所示...
这就是我想要的样子。现在,自从升级到Xcode 4.3(iOS 5)后,当我重新运行同一项目时,该框看起来像这样...
烦死了。因此,在iOS 5下,我将backgroundColor属性更改为'whiteColor',它可以正常工作。但是现在,在iOS 4.x下,框看起来像这样...
请注意丑陋的白色角落!因此,请问有人能告诉我在这里应该做什么,以便在iOS 4和iOS 5下都正常显示(即看起来像第一张图片!)。
非常感谢, Simon

2
你是否使用更新的SDK重新构建了? - BoltClock
1
只是想知道...你尝试过导入QuartzCore并设置textField.layer.backgroundColor=[UIColor clearColor].CGColor;吗? - Mat
1
不知道这里发生了什么 - 但现在它可以工作了。我删除了设置backgroundColor属性的那一行,现在在4和5中都看起来很好。 - Simon
我遇到了同样的问题,但是我是通过xib实现的,也不确定发生了什么,感觉很烦人。 - nickthedude
3个回答

3

几天前我也遇到了同样的问题。为了解决这个问题,我只需要设置borderStyle并注释掉backgroundColor一行代码。这样,所有的东西都可以正常工作,包括iOS4和iOS5。

//  textField.backgroundColor = [UIColor clearColor]; // just leave it, dont't set
textField.borderStyle = UITextBorderStyleRoundedRect;

我已将此标记为正确,因为我相当确定这也是解决我的问题的方法,但老实说不能百分之百确定,因为这是一个有点模糊的问题。 - Simon
这对我来说也是正确的答案。我进行了这个单一的更改,我的问题得到了解决,在所有测试中包括iOS 4.3到5.1。(在我的项目中,问题正如原帖所描述的那样。) - Douglas

2

以下是我解决这个问题的方法,你可以检查设备上正在运行的iOS版本,并根据情况进行处理,像这样:

float version = [[[UIDevice currentDevice]systemVersion]floatValue];
if(version < 5.0)
{
//user clear color
}else
{
//use white color
}

希望这能帮到你。

1
有时候你可能需要重建你的项目。另外,尝试在一个全新的项目中制作它,看看它是否实际上是Xcode的一个新变化,或者只是那个特定的项目来缩小范围。如果你隔离出了与你的特定项目有关的问题,尝试“重新做一遍”看看是否有效。但我看到你已经解决了它 :=)

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