XIB 设置UIView的圆角边框等属性

68次阅读
没有评论

在开发中,经常会用到一些圆角效果,或者边框效果,经常用的方法是通过代码直接去设置,比较方便快捷; 但是当我们通过 XIB创建出一个控件后,也需要这样的一些圆角或边框效果,能不能直接通过 XIB里面的一些方法直接设置呢?答案是有的

其主要设置的方式是通过在 XIB操作栏的User Defined Runtime Attributes中通过 KEY PATH去设置当前控件的属性,具体步骤如下图所示:

XIB

设置圆角最常用的是设置圆角,边框颜色,因此需要用到的 key Path有一下几个:

layer.cornerRadius ,注意该 key 对应 Value 的 type 应该设置为 String/Number 两种类型均可(代码设置弧度为:thisViewlayer.masksToBounds = YES) layer.masksToBounds ,注意该 key 对应 Value 的 type 应该设置为 Boolean , 当右侧出现对号时为YES(代码圆角为:thisView.layer.masksToBounds = YES) layer.borderWidth ,注意该 key 对应 Value 的 type 应该设置为 String/Number 两种类型均可(代码设置边框宽度为:thisViewlayer.borderWidth = 2) layer.borderColor , 注意该 key 对应 Value 的 type 应该设置为 Color(代码设置边框颜色:thisView.layer.borderColor = [UIColor redColor].CGColor) 其实如果你从上面一直敲下来的话: 你会发现只有1和2的两句代码是有效的; 3,4两句代码看起来并没有效果

原因:其实是因为在设置borderColor的时候,需要接受的是一个CGColor,而在 key Path中只有Color,其实就是 UIColor,类型是不对的,因此并没有正确显示想要展现的颜色.

因此这样的写法是有问题的. 我是通过添加一个CALayer的类扩展实现的,将key Path中设置的UIColor转换成为CGColor,为边框设置颜色,实现如下:

//.h文件添加
@interface CALayer (XibConfiguration)

@property(nonatomic, assign) UIColor *borderUIColor;
@property(nonatomic, assign) UIColor *shadowUIColor;

@end

//.m文件添加
@implementation CALayer (XibConfiguration)

- (void)setBorderUIColor:(UIColor *)color {
    self.borderColor = color.CGColor;
}


- (UIColor*)borderUIColor {
    return [UIColor colorWithCGColor:self.borderColor];
}


-(void)setShadowUIColor:(UIColor*)color {
    self.shadowColor = color.CGColor;
}

-(UIColor *)shadowUIColor {
    return [UIColor colorWithCGColor:self.shadowColor];
}
@end

这样以后,只需要将key Path中的layer.borderColor修改成为layer.borderUIColor 就可以了

最终的效果如下:

XIB

迷鹿, lostfawn
版权声明:本站原创文章,由迷鹿, lostfawn2021-11-12发表,共计1428字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
载入中...