UITextField 边框颜色

Posted

技术标签:

【中文标题】UITextField 边框颜色【英文标题】:UITextField border color 【发布时间】:2010-12-24 02:36:36 【问题描述】:

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

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

self.textField.backgroundColor = textFieldColor;

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

【问题讨论】:

很多有用的答案,但只有一个 (***.com/a/5387607/826946) 提到了我发现的关键:textField.borderStyle = UITextField.BorderStyle.none。没有它,我会得到内置边框的痕迹。似乎一旦您不使用内置边框并开始定义自己的边框,您需要使用borderStyle = none 说您不想要它,然后定义所有参数(颜色、cornerRadius 和borderWidth) 【参考方案1】:

在你的类中导入QuartzCore 框架:

#import <QuartzCore/QuartzCore.h>

要更改边框颜色,请使用以下代码 sn-p(我将其设置为 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

【讨论】:

这是 #import 而不是 QuartCore(你忘了 z) ios 7 必须设置边框宽度,否则颜色不生效。 作为初学者,这对我来说毫无意义。如果我启动一个空白的空应用程序,请转到情节提要并添加一个 TextView 字段。我在哪里导入quartzcore?我在哪里添加上面的边框宽度信息?什么是“textField”,它如何知道我说的是哪个文本字段? @Sephethus 如果您还没有弄清楚,这就是您必须做的事情:您必须“连接”您在情节提要中创建的文本字段并以编程方式更改这些属性乙>。连接故事板后,进入代码(例如在viewDidLoad 中)并通过说self.myTextField.layer.cornerRadius 等更改这些属性。这些更改将在您启动应用程序后立即生效,但您看不到故事板中的变化。如果这对您没有任何意义,我建议您访问一个网站,例如 Ray Wenderlich,并阅读一些初学者 tuts。 @NathanMcKaskle “我在哪里导入quartzcore?”你将它添加到你的ViewController.h文件的顶部。 “什么是“textField”,它如何知道我说的是哪个文本字段?” 您可以创建一个“本地”文本字段 IBOutlet var 并将其连接到您的 TextField(不是 TextView)'我刚刚放上情节提要。有关更多信息,请查看此处:hubpages.com/technology/… “我在哪里添加上面的边框宽度信息?” 任何地方,但最好是在 viewDidLoad 函数中。【参考方案2】:

试试这个:

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>

【讨论】:

【参考方案3】:

导入以下类:

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

【讨论】:

【参考方案4】:

这个问题在 Google 搜索中的排名很高,并且大部分都有效!我确实发现 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 的变化。

【讨论】:

【参考方案5】:

Swift 5.0 更新

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

【讨论】:

【参考方案6】:

要从接受的答案简化此操作,您还可以为 UIView 创建 Category(因为这适用于 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];

【讨论】:

【参考方案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];

【讨论】:

【参考方案8】: 任何视图(或 UIView 子类)上的

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

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

    在 CALayer 类上创建一个类别。用一个合适的名字声明一个 UIColor 类型的属性,我将它命名为 borderUIColor 。 为此属性编写 setter 和 getter。 在“Setter”方法中,只需将图层的“borderColor”属性设置为新的颜色 CGColor 值。 在“Getter”方法中返回 UIColor 和图层的边框颜色。

P.S:请记住,类别不能存储属性。 '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,按照其余步骤操作;

    单击要为其设置边框颜色的视图对象。 点击“实用工具”(屏幕右侧)面板中的“身份检查器”(左起第三个)。 在“用户定义的运行时属性”下,单击“+”按钮添加关键路径。 将键路径的类型设置为“颜色”。 将关键路径的值输入为“layer.borderUIColor”。 [记住这应该是您在类别中声明的变量名,而不是borderColor,这里是borderUIColor]。 最后选择了你想要的颜色。

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

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

【讨论】:

请不要对多个问题发布相同的答案。发布一个好的答案,然后投票/标记以关闭其他问题作为重复问题。如果问题不是重复的,调整您对该问题的回答【参考方案9】:
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).

【讨论】:

以上是关于UITextField 边框颜色的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 和 UITextField 边框颜色问题

Swift 4 - UITextfield 边框半径颜色问题

文本字段一侧的 UITextfield 边框颜色和宽度

更改 MUI TextField 边框颜色

如何隐藏 UITextField 边框?

如何隐藏UITextField边框?