我真的非常希望将自己的颜色设置为UITextField边框。但是到目前为止,我仅能找到如何更改边框线样式的方法。
我已经使用background属性以这种方式设置背景颜色:
self.textField.backgroundColor = textFieldColor;
但是我也必须更改UITextField边框的颜色。我的问题是关于如何更改边框颜色。
我真的非常希望将自己的颜色设置为UITextField边框。但是到目前为止,我仅能找到如何更改边框线样式的方法。
我已经使用background属性以这种方式设置背景颜色:
self.textField.backgroundColor = textFieldColor;
但是我也必须更改UITextField边框的颜色。我的问题是关于如何更改边框颜色。
Answers:
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];
快速代码
textField.layer.borderWidth = 1
textField.layer.borderColor = UIColor.whiteColor().CGColor
viewDidLoad
),并通过说出self.myTextField.layer.cornerRadius
etc来更改这些属性。这些更改将在启动应用程序后立即生效,但是您无法在情节提要中看到更改。如果这对您没有意义,建议您访问一个网站,例如Ray Wenderlich,并阅读一些初学者。
试试这个:
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>
这个问题在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中的更改所致。
为了简化从接受的答案这个动作,你也可以创建类别的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];
如果您使用带有圆角的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];
任何视图(或UIView子类)上的borderColor也可以使用情节提要进行一些编码设置,如果您要在多个UI对象上设置边框颜色,则此方法非常方便。
以下是实现它的步骤,
PS:请记住,类别不能存储属性。'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.borderWidth属性值设置为至少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)
。