问题:在使用xib创建的视图,内部拖拽的控件添加边框颜色的时候是不好用的
原理:xib里面添加的layer.borderColor的属性是UIColor,而边框需要的是CGColor。
解决方案
1、为控件拖拽一个属性:然后为他设置layer.borderWidth和layer.borderColor 。(这种方式不需要再xib里面设置边框属性了)。
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
//方法1
_textView.layer.borderColor = [UIColor redColor].CGColor;
_textView.layer.borderWidth = 1.0f;
}
2、在xib中为控件设置边框与颜色属性,然后为此控件拖拽出一个属性,在.m文件中重写此控件的set方法,重新设置边框颜色(此方法与方法1相似)
//方法2:
- (void)setTextView:(UIView *)textView{
textView.layer.borderColor = [UIColor blackColor].CGColor;
}
3、添加一个layer的扩展(category),声明一个UIColor对象,实现一下这个set与get方法,然后在xib中的边框颜色设置成此个对象(layer.borderColor 变成 layer.ZPFBorderColor)
.h
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface CALayer (AddBorder)
@property (nonatomic, assign) UIColor *ZPFBorderColor;
@end
NS_ASSUME_NONNULL_END
.m
#import "CALayer+AddBorder.h"
@implementation CALayer (AddBorder)
- (void)setZPFBorderColor:(UIColor *)ZPFBorderColor{
self.borderColor = ZPFBorderColor.CGColor;
}
- (UIColor *)ZPFBorderColor{
return [UIColor colorWithCGColor:self.borderColor];
}
@end
xib
demo地址:https://github.com/DidiFly/BorderColor.git