美文网首页iOS 开发 iOS高质量博客UI效果
快速设置UI组件圆角,WyhCornerRadius让你避免离屏

快速设置UI组件圆角,WyhCornerRadius让你避免离屏

作者: 被帅醒的小吴同志 | 来源:发表于2017-12-12 10:59 被阅读318次

    WyhCornerRadius

    • GitHub : https://github.com/XiaoWuTongZhi/WyhCornerRadius
    • 快速设置视图的圆角;
    • 支持所有继承于UIView的视图;
    • 支持4个方向设置圆角;
    • 支持边框、边框颜色、背景色、背景图;
    • 可自定义圆角度数;
    • 一行代码设置圆角;
    • 避免离屏渲染,简单高效;

    初衷

    给大家科普一下吧,其实并不是设置圆角就会导致离屏渲染,离屏渲染也并不只是只有圆角才能导致,在iOS11之前只要同时设置圆角maskToBoundsborderWidth时才会导致离屏渲染,iOS11以后系统已经优化兼容了这两个属性所导致的问题,但目前大多数应用还是需要适配11系统以下的,所以设置圆角及边框所导致的离屏渲染问题需要在iOS11以下避免,这就是WyhCornerRadius要干的事。

    现在GitHub上虽然已经有不少设置圆角的库,但本人在使用的时候感觉不尽理想,因此结合了诸多作者们的优点,简单写了这个,在这感谢ZYCornerRadius-masterJMRoundedCorner-master开源精神。

    在这里简单说说前两个库的优缺点吧,ZYCornerRadius-master一旦引用了类别,以后就会自动设置上圆角了,即使这个时候用户突然不想设置圆角;其次这个库的圆角绘制并不是在异步执行的,因此性能堪忧;但优点很明显,API方法简单,且重写了layoutSubview,这样可支持以后随时赋图,但有一点没看懂的是,没有必要去再设置一个observer去监听setImage,因为KVO其实就是抓的是set方法,如果有必要再去交换一下方法不就好了,layoutSubview一旦被重写,就没必要再去监听setImage了吧,不知道这样理解有没有问题。

    JMRoundedCorner-master这个库依赖的文件太多,(YYCacheYYImageYYWebImage) 不过优点很明显啊,圆角绘制是在异步性能很好,可支持的自定义很多(包括圆角的角度,方向等),Demo写的很高大上,不过API方法略显繁琐,最蛋疼的是,UIImageView圆角设置的时候必须同希望最终显示的图片一起赋值,哪怕这是一个网络图片的url,不过本人认为圆角设置更应该像一个属性一样存在,在初始化的时候去设置一遍即可(是属于UI层的),为什么非要将方法写在跟数据层交互的地方呢?很不理解。

    对比

    传统意义上的圆角边框设置类似于以下的形式,在iOS11以下设备上无疑会产生GPU性能问题 :

    img.layer.borderColor = [UIColor redColor].CGColor;
    img.layer.borderWidth = 1;
    img.layer.masksToBounds = YES;
    img.layer.cornerRadius = 20.0f;
    

    WyhCornerRadius设置圆角边框的形式如下,只需要在初始化的时候设置一遍即可,以后随时变换图片都行,所以当然支持SDWebImage网络赋图啦:

    [img wyh_autoSetImageCornerRedius:20.0f ConrnerType:(UIRectCornerAllCorners) BorderColor:[UIColor redColor] BorderWidth:1 Image:nil];
    

    性能上的对比其实在iOS11以下特别明显,大家可以到Demo中去查看,在UIImageViewDemo中点击naviBar右上角的按钮即可对比显示未通过WyhCornerRadius设置的性能问题

    最近时间比较少,很久没有写东西了,喜欢的帮我点个star,最后欢迎issue我,随时call

    CocoaPods

    WyhCornerRadius现已支持cocoaPods

    pod search WyhCornerRadius

    相关文章

      网友评论

      本文标题:快速设置UI组件圆角,WyhCornerRadius让你避免离屏

      本文链接:https://www.haomeiwen.com/subject/mrygixtx.html