WyhCornerRadius
- GitHub : https://github.com/XiaoWuTongZhi/WyhCornerRadius
- 快速设置视图的圆角;
- 支持所有继承于UIView的视图;
- 支持4个方向设置圆角;
- 支持边框、边框颜色、背景色、背景图;
- 可自定义圆角度数;
- 一行代码设置圆角;
- 避免离屏渲染,简单高效;
初衷
给大家科普一下吧,其实并不是设置圆角就会导致离屏渲染,离屏渲染也并不只是只有圆角才能导致,在iOS11
之前只要同时设置圆角maskToBounds
和borderWidth
时才会导致离屏渲染,iOS11
以后系统已经优化兼容了这两个属性所导致的问题,但目前大多数应用还是需要适配11系统以下的,所以设置圆角及边框所导致的离屏渲染问题需要在iOS11
以下避免,这就是WyhCornerRadius
要干的事。
现在GitHub
上虽然已经有不少设置圆角的库,但本人在使用的时候感觉不尽理想,因此结合了诸多作者们的优点,简单写了这个,在这感谢ZYCornerRadius-master
和JMRoundedCorner-master
开源精神。
在这里简单说说前两个库的优缺点吧,ZYCornerRadius-master
一旦引用了类别,以后就会自动设置上圆角了,即使这个时候用户突然不想设置圆角;其次这个库的圆角绘制并不是在异步执行的,因此性能堪忧;但优点很明显,API
方法简单,且重写了layoutSubview
,这样可支持以后随时赋图,但有一点没看懂的是,没有必要去再设置一个observer
去监听setImage
,因为KVO
其实就是抓的是set方法,如果有必要再去交换一下方法不就好了,layoutSubview
一旦被重写,就没必要再去监听setImage
了吧,不知道这样理解有没有问题。
JMRoundedCorner-master
这个库依赖的文件太多,(YYCache
、YYImage
、YYWebImage
) 不过优点很明显啊,圆角绘制是在异步性能很好,可支持的自定义很多(包括圆角的角度,方向等),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
中去查看,在UIImageView
的Demo
中点击naviBar
右上角的按钮即可对比显示未通过WyhCornerRadius
设置的性能问题
最近时间比较少,很久没有写东西了,喜欢的帮我点个star
,最后欢迎issue
我,随时call
我
CocoaPods
WyhCornerRadius
现已支持cocoaPods
pod search WyhCornerRadius
网友评论