我非常希望将自己的颜色设置为UITextField边框。但到目前为止,我只能找到如何更改边框线样式。
我使用background属性以这种方式设置背景颜色:
self.textField.backgroundColor = textFieldColor;
但我也必须改变UITextField边框的颜色。我的问题是如何改变边框颜色。
答案 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)
borderColor 也可以使用具有一点编码的故事板进行设置,如果您在多个UI上设置边框颜色,这种方法可能非常方便对象。
以下是如何实现它的步骤,
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,按照其余步骤进行操作;
您必须将 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)
。