
WyhCornerRadius
- GitHub : https://github.com/XiaoWuTongZhi/WyhCornerRadius
- 快速設(shè)置視圖的圓角;
- 支持所有繼承于UIView的視圖;
- 支持4個(gè)方向設(shè)置圓角;
- 支持邊框、邊框顏色、背景色、背景圖;
- 可自定義圓角度數(shù);
- 一行代碼設(shè)置圓角;
- 避免離屏渲染,簡(jiǎn)單高效;
初衷
給大家科普一下吧,其實(shí)并不是設(shè)置圓角就會(huì)導(dǎo)致離屏渲染,離屏渲染也并不只是只有圓角才能導(dǎo)致,在iOS11之前只要同時(shí)設(shè)置圓角maskToBounds和borderWidth時(shí)才會(huì)導(dǎo)致離屏渲染,iOS11以后系統(tǒng)已經(jīng)優(yōu)化兼容了這兩個(gè)屬性所導(dǎo)致的問題,但目前大多數(shù)應(yīng)用還是需要適配11系統(tǒng)以下的,所以設(shè)置圓角及邊框所導(dǎo)致的離屏渲染問題需要在iOS11以下避免,這就是WyhCornerRadius要干的事。
現(xiàn)在GitHub上雖然已經(jīng)有不少設(shè)置圓角的庫(kù),但本人在使用的時(shí)候感覺不盡理想,因此結(jié)合了諸多作者們的優(yōu)點(diǎn),簡(jiǎn)單寫了這個(gè),在這感謝ZYCornerRadius-master和JMRoundedCorner-master開源精神。
在這里簡(jiǎn)單說說前兩個(gè)庫(kù)的優(yōu)缺點(diǎn)吧,ZYCornerRadius-master一旦引用了類別,以后就會(huì)自動(dòng)設(shè)置上圓角了,即使這個(gè)時(shí)候用戶突然不想設(shè)置圓角;其次這個(gè)庫(kù)的圓角繪制并不是在異步執(zhí)行的,因此性能堪憂;但優(yōu)點(diǎn)很明顯,API方法簡(jiǎn)單,且重寫了layoutSubview,這樣可支持以后隨時(shí)賦圖,但有一點(diǎn)沒看懂的是,沒有必要去再設(shè)置一個(gè)observer去監(jiān)聽setImage,因?yàn)?code>KVO其實(shí)就是抓的是set方法,如果有必要再去交換一下方法不就好了,layoutSubview一旦被重寫,就沒必要再去監(jiān)聽setImage了吧,不知道這樣理解有沒有問題。
JMRoundedCorner-master這個(gè)庫(kù)依賴的文件太多,(YYCache、YYImage、YYWebImage) 不過優(yōu)點(diǎn)很明顯啊,圓角繪制是在異步性能很好,可支持的自定義很多(包括圓角的角度,方向等),Demo寫的很高大上,不過API方法略顯繁瑣,最蛋疼的是,UIImageView圓角設(shè)置的時(shí)候必須同希望最終顯示的圖片一起賦值,哪怕這是一個(gè)網(wǎng)絡(luò)圖片的url,不過本人認(rèn)為圓角設(shè)置更應(yīng)該像一個(gè)屬性一樣存在,在初始化的時(shí)候去設(shè)置一遍即可(是屬于UI層的),為什么非要將方法寫在跟數(shù)據(jù)層交互的地方呢?很不理解。
對(duì)比
傳統(tǒng)意義上的圓角邊框設(shè)置類似于以下的形式,在iOS11以下設(shè)備上無(wú)疑會(huì)產(chǎn)生GPU性能問題 :
img.layer.borderColor = [UIColor redColor].CGColor;
img.layer.borderWidth = 1;
img.layer.masksToBounds = YES;
img.layer.cornerRadius = 20.0f;
WyhCornerRadius設(shè)置圓角邊框的形式如下,只需要在初始化的時(shí)候設(shè)置一遍即可,以后隨時(shí)變換圖片都行,所以當(dāng)然支持SDWebImage網(wǎng)絡(luò)賦圖啦:
[img wyh_autoSetImageCornerRedius:20.0f ConrnerType:(UIRectCornerAllCorners) BorderColor:[UIColor redColor] BorderWidth:1 Image:nil];
性能上的對(duì)比其實(shí)在iOS11以下特別明顯,大家可以到Demo中去查看,在UIImageView的Demo中點(diǎn)擊naviBar右上角的按鈕即可對(duì)比顯示未通過WyhCornerRadius設(shè)置的性能問題
最近時(shí)間比較少,很久沒有寫東西了,喜歡的幫我點(diǎn)個(gè)star,最后歡迎issue我,隨時(shí)call我
CocoaPods
WyhCornerRadius現(xiàn)已支持cocoaPods
pod search WyhCornerRadius
