使用XIB,nib为控件添加边框的颜色

问题:在使用xib创建的视图,内部拖拽的控件添加边框颜色的时候是不好用的

原理:xib里面添加的layer.borderColor的属性是UIColor,而边框需要的是CGColor。

使用XIB,nib为控件添加边框的颜色_第1张图片
WechatIMG1 1.jpeg

解决方案

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 
#import 
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

使用XIB,nib为控件添加边框的颜色_第2张图片
WechatIMG2 1.jpeg

demo地址:https://github.com/DidiFly/BorderColor.git

你可能感兴趣的:(使用XIB,nib为控件添加边框的颜色)