我非常希望能够为UITextField边框设置自定义颜色。但是目前我只找到了如何更改边框线条样式的方法。
我使用了background属性来设置背景颜色,如下所示:
self.textField.backgroundColor = textFieldColor;
但我也必须改变UITextField边框的颜色。我的问题是如何改变边框颜色。
我非常希望能够为UITextField边框设置自定义颜色。但是目前我只找到了如何更改边框线条样式的方法。
我使用了background属性来设置背景颜色,如下所示:
self.textField.backgroundColor = textFieldColor;
但我也必须改变UITextField边框的颜色。我的问题是如何改变边框颜色。
在您的类中导入 QuartzCore
框架:
#import <QuartzCore/QuartzCore.h>
如需更改边框颜色,请使用以下代码片段(我将其设置为红色):
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
viewDidLoad
中)并通过self.myTextField.layer.cornerRadius
等语句来更改这些属性。这些更改将在启动应用程序时立即生效,但你无法在Storyboard中看到这些更改。如果这对你来说没有任何意义,我建议你去一个网站,例如Ray Wenderlich,阅读一些初学者教程。 - Aleksander试试这个:
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.0
替换为所需的颜色编号。
Swift 5.0更新
textField.layer.masksToBounds = true
textField.layer.borderColor = UIColor.blue.cgColor
textField.layer.borderWidth = 1.0
这个问题在谷歌搜索中排名很高,大部分都是有效的!不过我发现 Salman Zaidi 的回答只适用于 iOS 7。
你需要对 "reverting" 代码进行修改。我发现以下代码可以完美地恢复:
textField.layer.cornerRadius = 0.0f;
textField.layer.masksToBounds = YES;
textField.layer.borderColor = [[UIColor blackColor] CGColor];
textField.layer.borderWidth = 0.0f;
我理解这很可能是由于iOS 7的更改所致。
如果您想使用带圆角的文本框,请使用以下代码:
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];
为了简化接受答案中的这些操作,您还可以为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];
borderColor 属性可以在任何视图(或UIView子类)上通过少量代码和Storyboard设置,并且如果您要在多个UI对象上设置边框颜色,则此方法非常方便。
以下是实现的步骤:
P.S:请记住,分类不能具有存储的属性。“borderUIColor”用作计算的属性,仅作为实现我们关注点的参考。
请查看下面的代码示例;
Objective 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才能看到边框颜色。
构建并运行。 愉快编码。:)
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)
。