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

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è)置圓角maskToBoundsborderWidth時(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-masterJMRoundedCorner-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、YYImageYYWebImage) 不過優(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中去查看,在UIImageViewDemo中點(diǎn)擊naviBar右上角的按鈕即可對(duì)比顯示未通過WyhCornerRadius設(shè)置的性能問題

最近時(shí)間比較少,很久沒有寫東西了,喜歡的幫我點(diǎn)個(gè)star,最后歡迎issue我,隨時(shí)call

CocoaPods

WyhCornerRadius現(xiàn)已支持cocoaPods

pod search WyhCornerRadius

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

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,840評(píng)論 4 61
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評(píng)論 25 708
  • 回憶今天清晨擦肩而過的太陽(yáng)~ ……省略號(hào)含了很多……
    幸運(yùn)二月閱讀 135評(píng)論 0 0
  • 雖然名氣不大,但在茫茫多的“內(nèi)地”地產(chǎn)富豪里,李思廉卻是最特殊的一個(gè)。 他是土生土長(zhǎng)的香港人。 2012年時(shí),華商...
    道復(fù)有無(wú)閱讀 395評(píng)論 0 0
  • Android使用Java語(yǔ)言,Java默認(rèn)使用大端字節(jié)序,c/c++默認(rèn)使用小端字節(jié)序,當(dāng)我們?cè)趈ni中需要使用...
    一林花色閱讀 4,285評(píng)論 0 1

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