快速設(shè)置UI組件圓角,WyhCornerRadius讓你避免離屏渲染

WyhCornerRadius

  • GitHub : https://github.com/XiaoWuTongZhi/WyhCornerRadius
  • 快速設(shè)置視圖的圓角;
  • 支持所有繼承于UIView的視圖;
  • 支持4個方向設(shè)置圓角;
  • 支持邊框、邊框顏色、背景色、背景圖;
  • 可自定義圓角度數(shù);
  • 一行代碼設(shè)置圓角;
  • 避免離屏渲染,簡單高效;

初衷

給大家科普一下吧,其實并不是設(shè)置圓角就會導(dǎo)致離屏渲染,離屏渲染也并不只是只有圓角才能導(dǎo)致,在iOS11之前只要同時設(shè)置圓角maskToBoundsborderWidth時才會導(dǎo)致離屏渲染,iOS11以后系統(tǒng)已經(jīng)優(yōu)化兼容了這兩個屬性所導(dǎo)致的問題,但目前大多數(shù)應(yīng)用還是需要適配11系統(tǒng)以下的,所以設(shè)置圓角及邊框所導(dǎo)致的離屏渲染問題需要在iOS11以下避免,這就是WyhCornerRadius要干的事。

現(xiàn)在GitHub上雖然已經(jīng)有不少設(shè)置圓角的庫,但本人在使用的時候感覺不盡理想,因此結(jié)合了諸多作者們的優(yōu)點,簡單寫了這個,在這感謝ZYCornerRadius-masterJMRoundedCorner-master開源精神。

在這里簡單說說前兩個庫的優(yōu)缺點吧,ZYCornerRadius-master一旦引用了類別,以后就會自動設(shè)置上圓角了,即使這個時候用戶突然不想設(shè)置圓角;其次這個庫的圓角繪制并不是在異步執(zhí)行的,因此性能堪憂;但優(yōu)點很明顯,API方法簡單,且重寫了layoutSubview,這樣可支持以后隨時賦圖,但有一點沒看懂的是,沒有必要去再設(shè)置一個observer去監(jiān)聽setImage,因為KVO其實就是抓的是set方法,如果有必要再去交換一下方法不就好了,layoutSubview一旦被重寫,就沒必要再去監(jiān)聽setImage了吧,不知道這樣理解有沒有問題。

JMRoundedCorner-master這個庫依賴的文件太多,(YYCache、YYImage、YYWebImage) 不過優(yōu)點很明顯啊,圓角繪制是在異步性能很好,可支持的自定義很多(包括圓角的角度,方向等),Demo寫的很高大上,不過API方法略顯繁瑣,最蛋疼的是,UIImageView圓角設(shè)置的時候必須同希望最終顯示的圖片一起賦值,哪怕這是一個網(wǎng)絡(luò)圖片的url,不過本人認為圓角設(shè)置更應(yīng)該像一個屬性一樣存在,在初始化的時候去設(shè)置一遍即可(是屬于UI層的),為什么非要將方法寫在跟數(shù)據(jù)層交互的地方呢?很不理解。

對比

傳統(tǒng)意義上的圓角邊框設(shè)置類似于以下的形式,在iOS11以下設(shè)備上無疑會產(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è)置一遍即可,以后隨時變換圖片都行,所以當然支持SDWebImage網(wǎng)絡(luò)賦圖啦:

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

性能上的對比其實在iOS11以下特別明顯,大家可以到Demo中去查看,在UIImageViewDemo中點擊naviBar右上角的按鈕即可對比顯示未通過WyhCornerRadius設(shè)置的性能問題

最近時間比較少,很久沒有寫東西了,喜歡的幫我點個star,最后歡迎issue我,隨時call

CocoaPods

WyhCornerRadius現(xiàn)已支持cocoaPods

pod search WyhCornerRadius

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容