我无法使用UITextField
控制borderStyle= UITextBorderStyleRoundedRect
的背景颜色。使用此边框样式,backgroundColor
属性似乎只能控制沿圆角矩形内边缘的非常窄的线条。该区域的其余部分仍为白色。
但是,如果borderStyle
设置为UIBorderStyle=UITextBorderStyleBezel
,那么UITextField
的整个背景将由其backgroundColor
属性控制。
这是一个功能吗?有没有办法通过backgroundColor
来控制UITextField
的{{1}}?
答案 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)
其他答案在具有圆角矩形样式的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样式都可以正常工作。
答案 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
的其他颜色进行此操作。
希望有所帮助