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
【讨论】:
这是 #importviewDidLoad
中)并通过说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 边框颜色问题