UITextField边框颜色

时间:2009-12-07 17:30:48

标签: ios colors uikit uitextfield border

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

我使用background属性以这种方式设置背景颜色:

self.textField.backgroundColor = textFieldColor;

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

9 个答案:

答案 0 :(得分:266)

在您的班级中导入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

答案 1 :(得分:20)

试试这个:

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>

答案 2 :(得分:17)

导入以下类:

#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.0替换为相应的颜色编号。

答案 3 :(得分:12)

这个问题在Google搜索中显示得非常高,并且大部分都在使用!我确实发现Salman Zaidi的答案对iOS 7来说是部分正确的。

您需要修改&#34;还原&#34;码。我发现恢复的以下工作完美无缺:

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

据我所知,这很可能是由于iOS 7的变化造成的。

答案 4 :(得分:10)

要从接受的答案简化此操作,您还可以为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];

答案 5 :(得分:7)

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

答案 6 :(得分:4)

任何视图(或UIView子类)上的

borderColor 也可以使用具有一点编码的故事板进行设置,如果您在多个UI上设置边框颜色,这种方法可能非常方便对象。

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

  1. 在CALayer类上创建一个类别。使用合适的名称声明类型为 UIColor 的属性,我将其命名为 borderUIColor
  2. 为此属性编写setter和getter。
  3. 在“塞特”中方法只需设置&#34; borderColor&#34;层的属性为新颜色CGColor值。
  4. 在Getter&#39;方法使用图层的borderColor返回UIColor。
  5. P.S:记住,类别不能存储属性。 &#39; borderUIColor&#39;用作计算属性,作为实现我们所关注的内容的参考。

    请查看以下代码示例;

    目标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. 点击&#34; Identity Inspector&#34;(左起第3位)&#34; Utility&#34;(屏幕右侧)面板。
    3. 在&#34;用户定义的运行时属性&#34;下,单击&#34; +&#34;按钮添加关键路径。
    4. 将键路径的类型设置为&#34; Color&#34;。
    5. 输入关键路径的值为&#34; layer.borderUIColor&#34;。 [请记住,这应该是您在类别中声明的变量名称,而不是 borderColor ,此处 borderUIColor ]。
    6. 最后选择你想要的任何颜色。
    7. 您必须将 layer.borderWidth 属性值设置为至少1才能看到边框颜色。

      构建并运行。 快乐的编码。 :)

答案 7 :(得分:1)

更新为Swift 5.0

textField.layer.masksToBounds = true
textField.layer.borderColor = UIColor.blue.cgColor
textField.layer.borderWidth = 1.0

答案 8 :(得分:1)

这是一个Swift实现。 您可以进行扩展,以便您可以根据需要在其他视图中使用它。

extension UIView {
    func addBorderAndColor(color: UIColor, width: CGFloat, corner_radius: CGFloat = 0, clipsToBounds: Bool = false) {
        self.layer.borderWidth  = width
        self.layer.borderColor  = color.cgColor
        self.layer.cornerRadius = corner_radius
        self.clipsToBounds      = clipsToBounds
    }
}

这样称呼: email.addBorderAndColor(color: UIColor.white, width: 0.5, corner_radius: 5, clipsToBounds: true)