在xib storyboard中设置view边框颜色,layer.borderColor无效

实现步骤(问题复现)

1、在xib中  identity inspector   —> User Defined Runtime Attributes  —> 添加Key Path以及Value。

设置圆角:layer.cornerRadius 对应ValueType为Number或者String。如果Value值为正方形width的一半,则为圆形。

设置边框宽度:layer.borderWidth  对应ValueType为Number或者String。

设置边框颜色:layer.borderColor   对应ValueType为Color。

出现问题

这样设置后,圆角,宽度都生效了,可是边框的颜色是黑色,也就是设置边框颜色没有生效。

问题原因

到QuartzCore.framework中找到CALayer.h这个头文件,搜索borderColor这个属性 @property(nullable) CGColorRef borderColor;  到这里 我们就可以找到原因了。在User Defined Runtime Attributes 中设置layer.borderColor的ValueType为Color,这里的Color对应的是UIColor,而设置layer.borderColor需要是CGColor类型,因此没有生效。关于 UIColor CGColor CIColor的区别联系

问题解决

建立一个CALayer的分类Category,在该分类中添加一个属性,在该属性的setter方法中将该UIColor转化成CGColor赋值给borderColor,然后在xib中添加该属性的key path。

e.g.

// CALayer+XibBorderColor.h

@interface CALayer (XibBorderColor)

@property (nonatomic, strong) UIColor *borderColorWithUIColor;

@end

// CALayer+XibBorderColor.m

#import "CALayer+XibBorderColor.h"

@implementation CALayer (XibBorderColor)

- (void)setBorderColorWithUIColor:(UIColor *)borderColorWithUIColor {

    self.borderColor = borderColorWithUIColor.CGColor;

}

@end

喜欢请点赞👍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容