iPhone UITextField背景色

时间:2009-12-28 21:13:48

标签: ios uitextfield background-color

我无法使用UITextField控制borderStyle= UITextBorderStyleRoundedRect的背景颜色。使用此边框样式,backgroundColor属性似乎只能控制沿圆角矩形内边缘的非常窄的线条。该区域的其余部分仍为白色。

但是,如果borderStyle设置为UIBorderStyle=UITextBorderStyleBezel,那么UITextField的整个背景将由其backgroundColor属性控制。

这是一个功能吗?有没有办法通过backgroundColor来控制UITextField的{​​{1}}?

7 个答案:

答案 0 :(得分:31)

要更改UITextField中的背景颜色,首先需要在Interface Builder中以编程方式将不同样式的文本字段用于“舍入”样式(例如“无边框”样式)。

然后您可以使用

轻松更改背景颜色
textField.backgroundColor = backgroundColor;

其中textField是你的UITextField,而backgroundColor是UIColor。

作为进一步的提示 - 如果您希望恢复圆角外观,您首先需要

#import <QuartzCore/QuartzCore.h>

然后设置

textField.layer.cornerRadius=8.0f;
textField.layer.masksToBounds=YES

使此功能正常工作

答案 1 :(得分:14)

colored UITextField using overlay

其他答案在具有圆角矩形样式的UITextField上没有阴影。在尝试了很多选项之后,我终于在UITextField上放置了一个UIView,使用相同的框架和自动调整大小的蒙版,将alpha设置为0.3,并将背景设置为蓝色。然后我使用彼得约翰逊的回答片段来剪掉彩色叠加视图上的圆角。此外,取消选中IB中的“启用用户交互”复选框,以允许触摸事件级联到下面的UITextField。现在看起来很完美。

副作用:您的文字也会着色(如果它是黑色则无关紧要)

#import <QuartzCore/QuartzCore.h>

colorizeOverlayView.layer.cornerRadius = 6.0f;
colorizeOverlayView.layer.masksToBounds = YES;

答案 2 :(得分:6)

这比我们想象的要容易得多。

使用colorWithRed:green:blue:设置backgroundColor时,颜色应该是浮点数,应该是1的一小部分。例如:

[myTextField setBackgroundColor:[UIColor colorWithRed:255.0f/255.0f green:110.0f/255.0f blue:110.0f/255.0f alpha:1];

执行此操作时,所有TextField样式都可以正常工作。

另见:background color not working as expected

答案 3 :(得分:4)

视图层次结构的转储显示UITextField有一个类型为UITextFieldRoundedRectBackgroundView的子视图,而后者又有12个UIImageView

Erica Sadun的older article显示了额外的UILabel,Apple显然已在SDK的更高版本中删除了该文件。

摆弄UIImageView并没有多大变化。

所以答案是:可能无法改变背景颜色。

答案 4 :(得分:3)

雅各布的回答是最好的答案,因为它允许你将阴影保留在RoundedRect文本框下面,所以给雅各布+1!

要详细说明他的解决方案,你需要这样做:

    UIView *textFieldShadeView=[[UIView alloc] init];
[textFieldShadeView setFrame:myTextFiled.frame];
textFieldShadeView.layer.cornerRadius=8.0f;
textFieldShadeView.layer.masksToBounds=YES;
textFieldShadeView.backgroundColor=[UIColor blueColor];
textFieldShadeView.alpha=0.3;
textFieldShadeView.userInteractionEnabled=NO;
[self.view addSubview:textFieldShadeView];
[textFieldShadeView release];

myTextFiled是圆角矩形文本字段,您尝试更改背景颜色。执行上述操作后,您将获得雅各布的蓝色文本字段以及适当的阴影。

答案 5 :(得分:1)

...
textField.opaque = YES;
textField.backgroundColor=[UIColor blueColor];
textField.layer.cornerRadius=8.0f;
textField.layer.masksToBounds=YES

答案 6 :(得分:0)

你可以这样做:

textField.backgroundColor = [UIColor whiteColor];

在这种情况下,我使用白色进行此操作,但您可以使用uiColor的其他颜色进行此操作。

希望有所帮助