我真的很想设置我自己的颜色 UITextField 边界。但到目前为止,我可以找到如何改变边框线样式只。
我用背景属性来设置背景颜色:
self.textField.backgroundColor = textFieldColor;
但是我也必须改变 UITextField 边框的颜色。我的问题是如何改变边框颜色。
试试这个:
UITextField *theTextFiels=[[UITextField alloc]initWithFrame:CGRectMake(40, 40, 150, 30)]; theTextFiels.borderStyle=UITextBorderStyleNone; theTextFiels.layer.cornerRadius=8.0f; theTextFiels.layer.masksToBounds=YES; theTextFiels.backgroundColor=[UIColor redColor]; theTextFiels.layer.borderColor=[[UIColor blackColor]CGColor]; theTextFiels.layer.borderWidth= 1.0f; [self.view addSubview:theTextFiels]; [theTextFiels release];
进口 QuartzCore:
#import <QuartzCore/QuartzCore.h>
在类中导入 QuartzCore框架:
QuartzCore
为了更改边框颜色,请使用下面的代码片段(我将其设置为 redColor) ,
textField.layer.cornerRadius=8.0f; textField.layer.masksToBounds=YES; textField.layer.borderColor=[[UIColor redColor]CGColor]; textField.layer.borderWidth= 1.0f;
为了恢复到原来的布局,只需将边框颜色设置为清晰颜色,
serverField.layer.borderColor=[[UIColor clearColor]CGColor];
用迅捷的代码
textField.layer.borderWidth = 1 textField.layer.borderColor = UIColor.whiteColor().CGColor
导入以下类:
//设置文本字段边框的灰色的代码
[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]];
根据需要用相应的颜色号码替换 171.0。
171.0
为了从已接受的答案中简化这个操作,您还可以为 UIView创建 分类(因为这适用于 UIView 的所有子类,不仅适用于文本字段:
UIView
UIView + Additions.h:
#import <Foundation/Foundation.h> @interface UIView (Additions) - (void)setBorderForColor:(UIColor *)color width:(float)width radius:(float)radius; @end
UIView + Additions.m:
#import "UIView+Additions.h" @implementation UIView (Additions) - (void)setBorderForColor:(UIColor *)color width:(float)width radius:(float)radius { self.layer.cornerRadius = radius; self.layer.masksToBounds = YES; self.layer.borderColor = [color CGColor]; self.layer.borderWidth = width; } @end
用法:
#import "UIView+Additions.h" //... [textField setBorderForColor:[UIColor redColor] width:1.0f radius:8.0f];
这个问题在谷歌搜索中出现的频率很高,而且在大多数情况下都很有效!我确实发现 Salman Zaidi 的答案在 iOS7中是部分正确的。
您需要对“恢复”代码进行修改。我发现以下恢复代码非常有效:
textField.layer.cornerRadius = 0.0f; textField.layer.masksToBounds = YES; textField.layer.borderColor = [[UIColor blackColor] CGColor]; textField.layer.borderWidth = 0.0f;
我知道这很可能是由于 iOS7的变化。
任何视图(或 UIView 子类)上的 borderColor 也可以使用情节串连图板进行设置,只需要一点编码,如果您在多个 UI 对象上设置边框颜色,这种方法非常方便。
下面是如何实现它的步骤,
附注: 记住,类别不能存储属性。“ borderUIColor”用作计算属性,只是作为实现我们所关注的内容的参考。
请看下面的代码示例;
目标丙:
接口文件:
#import <QuartzCore/QuartzCore.h> #import <UIKit/UIKit.h> @interface CALayer (BorderProperties) // This assigns a CGColor to borderColor. @property (nonatomic, assign) UIColor* borderUIColor; @end
实施文件:
#import "CALayer+BorderProperties.h" @implementation CALayer (BorderProperties) - (void)setBorderUIColor:(UIColor *)color { self.borderColor = color.CGColor; } - (UIColor *)borderUIColor { return [UIColor colorWithCGColor:self.borderColor]; } @end
Swift 2.0:
extension CALayer { var borderUIColor: UIColor { set { self.borderColor = newValue.CGColor } get { return UIColor(CGColor: self.borderColor!) } } }
最后进入故事板/XIB,按照其余步骤操作;
您必须将 图层,边界宽度属性值设置为至少1以查看边框颜色。
构建和运行。 快乐编码:)
如果您使用圆角的 TextField,请使用以下代码:
self.TextField.layer.cornerRadius=8.0f; self.TextField.layer.masksToBounds=YES; self.TextField.layer.borderColor=[[UIColor redColor]CGColor]; self.TextField.layer.borderWidth= 1.0f;
移除边框:
self.TextField.layer.masksToBounds=NO; self.TextField.layer.borderColor=[[UIColor clearColor]CGColor];
迅捷5.0更新
textField.layer.masksToBounds = true textField.layer.borderColor = UIColor.blue.cgColor textField.layer.borderWidth = 1.0
extension UIView { func addBorder(_ width: CGFloat = 1, color: UIColor = .black, cornerRadius: CGFloat = 4) { layer.borderWidth = width layer.borderColor = color.cgColor layer.cornerRadius = cornerRadius } }
可以这么说: email.addBorder(1.0, color: .blue, cornerRadius: 5).
email.addBorder(1.0, color: .blue, cornerRadius: 5)