对UIView实现圆角的改进
2018-03-22 本文已影响61人
简书坤
第一版位置:
第一版存在的问题:
- 不能自动给
AutoLayout
出来view
正确添加圆角; - 反复的添加和移除做圆角处理的
shapeLayer
,存在一定的性能损耗; - 部分
API
设计的不够理想;
现在给出了修改后的第二版:
- 现在你不需要再为获取
xib
或者约束出来的view
的bounds
而头疼了,UIView+DRCorner
已经不在需要你传入bounds
了; - 同样的现在不会存在反复添加和移除实现圆角化的
shapeLayer
了; - 你可以直接创建出来一个控制圆角显示的
DRCornerModel
实例,来控制圆角的各个属性:如cornerRadius
等,然后直接调用UIView
的拓展方法-dr_cornerWithCornerModel:
方法进行圆角化处理;
效果如下图:
DRCornerExt-Demo1.gif
swift版本已提供DRCorner_Swift
这里给出第一版中说过的另类的实现方法:
创建一个UIView
的子类DRCornerView
,替换DRCornerView
的layer
为CAShapeLayer
,对shapeLayer
做第一版一样的圆角处理,然后再设置这个DRCornerView
和要圆角化的view
保持在同一位置即可(如果被遮挡的corberedView
有点击或者其他交互事件这时你就需要设置DRCornerView
的userInteractionEnabled
为NO
,以此来将touch事件传递给corberedView
),具体可见 DRCornerExt中的CornerView
文件夹下的实现;
ps:你甚至可以重写DRCornerView
的-willMoveToSuperview:
方法,将DRCornerView
设置和superView
保持一致大小;
附上github链接 DRCornerExt