UITextField边框颜色

我非常希望将自己的颜色设置为UITextField边框。 但到目前为止,我只能找出如何改变边框线条样式。

我用背景属性来设置背景颜色:

self.textField.backgroundColor = textFieldColor; 

但是我也必须改变UITextField边框的颜色。 而我的问题是关于如何改变边框的颜色。

在你的类中导入QuartzCore框架:

 #import <QuartzCore/QuartzCore.h> 

和改变边框的颜色使用下面的代码片段(我把它设置为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]; 

在swift代码中

  textField.layer.borderWidth = 1 textField.layer.borderColor = UIColor.whiteColor().CGColor 

尝试这个:

 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> 

导入以下类:

 #import <QuartzCore/QuartzCore.h> 

//代码设置文本字段边框的灰色

 [[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 green:171.0/255.0 blue:171.0/255.0 alpha:1.0] CGColor]]; 

根据需要将171.0replace为相应的颜色编号。

这个问题在Googlesearch中显示得相当高,并且大部分都是工作的! 我确实发现Salman Zaidi的回答对于iOS 7来说是部分正确的。

您需要对“还原”代码进行修改。 我发现下面的恢复工作是完美的:

 textField.layer.cornerRadius = 0.0f; textField.layer.masksToBounds = YES; textField.layer.borderColor = [[UIColor blackColor] CGColor]; textField.layer.borderWidth = 0.0f; 

我明白,这很可能是由于iOS 7的变化。

为了从接受的答案中简化这个动作,你也可以为UIView创build类别 (因为这对于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]; 

任何视图(或UIView子类)上的borderColor也可以使用一些编码的故事板来设置,如果你在多个UI对象上设置边框颜色,这种方法可能非常方便。

以下是如何实现它的步骤,

  1. 在CALayer类上创build一个类别。 用一个合适的名字声明一个types为UIColor的属性,我将其命名为borderUIColor
  2. 写这个属性的setter和getter。
  3. 在“Setter”方法中,只需将图层的“borderColor”属性设置为新的颜色CGColor值即可。
  4. 在“Getter”方法中,返回UIColor和图层的borderColor。

PS:请记住,类别不能存储属性。 'borderUIColor'被用作一个计算属性,只是作为一个参考来实现我们正在关注的内容。

请看下面的代码示例;

目标C:

接口文件:

 #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. 点击你想设置边框颜色的View对象。
  2. 点击“Utility”(屏幕右侧)面板上的“Identity Inspector”(左起第三个)。
  3. 在“用户定义的运行时属性”下,点击“+”button添加一个关键path。
  4. 将关键path的types设置为“Color”。
  5. input关键path的值为“layer.borderUIColor”。 [记住这应该是您在类别中声明的variables名称 ,而不是borderColor,这里是borderUIColor ]。
  6. 最后select你想要的任何颜色。

您必须将layer.borderWidth属性值设置为至less1才能看到边框颜色。

build立和运行。 快乐的编码。 🙂

如果您使用圆angular的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];