对UIView实现圆角的改进

2018-03-22  本文已影响61人  简书坤

第一版位置:

给视图添加圆角的轻量级方法

第一版存在的问题:

  1. 不能自动给AutoLayout出来view正确添加圆角;
  2. 反复的添加和移除做圆角处理的shapeLayer,存在一定的性能损耗;
  3. 部分API设计的不够理想;

现在给出了修改后的第二版:

  1. 现在你不需要再为获取xib或者约束出来的viewbounds而头疼了,UIView+DRCorner已经不在需要你传入bounds了;
  2. 同样的现在不会存在反复添加和移除实现圆角化的shapeLayer了;
  3. 你可以直接创建出来一个控制圆角显示的DRCornerModel实例,来控制圆角的各个属性:如cornerRadius等,然后直接调用UIView的拓展方法-dr_cornerWithCornerModel:方法进行圆角化处理;

效果如下图:


DRCornerExt-Demo1.gif

swift版本已提供DRCorner_Swift

这里给出第一版中说过的另类的实现方法:
创建一个UIView的子类DRCornerView,替换DRCornerViewlayerCAShapeLayer,对shapeLayer做第一版一样的圆角处理,然后再设置这个DRCornerView和要圆角化的view保持在同一位置即可(如果被遮挡的corberedView有点击或者其他交互事件这时你就需要设置DRCornerViewuserInteractionEnabledNO,以此来将touch事件传递给corberedView),具体可见 DRCornerExt中的CornerView文件夹下的实现;

ps:你甚至可以重写DRCornerView-willMoveToSuperview:方法,将DRCornerView设置和superView保持一致大小;

附上github链接 DRCornerExt

上一篇下一篇

猜你喜欢

热点阅读