在某些时候会觉得使用Storyboard来实现一些简单界面的ViewController会相对容易。可是在Storyboard中,你会发现像layer层的属性都没办法修改,也就是说没办法添加边界,更改圆角之类的操作。
不过还好,在Storyboard中有一个地方可以让我们修改视图Runtime Attributes

在这里,我们可以对layer的属性进行修改。像cornerRadius或者borderWidth等数值类型的类型会变成NSNumber类型。而borderColor这样的颜色值的话,你会发现,虽然设置为Color类型,但是实际上没有crash,没有报错,但是view的layer并没有把borderColor显示出来。
因为这里的Color是UIColor类型,而layer的color要求是CGColorRef类型的。这两者之间没有办法直接转换。
所以我们只能通过Category来添加一个属性用于转换
CALayer+XibConfiguration.h
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
@interface CALayer (XibConfiguration)
@property (nonatomic, assign) UIColor *borderColorFromUIColor;
@end
CALayer+XibConfiguration.m
#import "CALayer+XibConfiguration.h"
@implementation CALayer (XibConfiguration)
- (UIColor *)borderColorFromUIColor {
return [UIColor colorWithCGColor:self.borderColor];
}
- (void)setBorderColorFromUIColor:(UIColor *)color {
self.borderColor = color.CGColor;
}
@end
然后将Storyboard中的Key Path从layer.borderColor更改为layer.borderColorFromUIColor即可。
参考链接