在我們平常的開發(fā)過程中,經(jīng)常會用到各種視圖圓角的設(shè)置和需求問題,我平常用到的途徑可能有以下幾種:
1.這是我們經(jīng)常使用的一種方法?
imageView.layer.cornerRadius = 5; ? imageView.layer.masksToBounds = YES;
在網(wǎng)上搜索的結(jié)果是:這樣設(shè)置會觸發(fā)離屏渲染,比較消耗性能,基本上都是這么說的, 我親身做了測試,如果說你設(shè)置圓角的只會視圖的情況下,使用這種方法進行視圖的圓角裁剪的,然后滑動的流暢度還是不錯的。
2.CAShapeLayer和UIBezierPath進行繪制和截取,代碼見圖

經(jīng)過測試,不管是截取的是view還是用UIImageView寫入圖片,滑動的過程中卡頓特別嚴重,所以說在視圖中有多個設(shè)置圓角或者截取圓的視圖最好不要采取這種方式
3.這種情況下是直接對圖片進行的操作

這種測試后的性能相對來說會好很多,相當(dāng)流暢,這個也是SDWebImage采用的方法 但是這種寫法僅限于展示圖片類操作,它不能操作imageView的截取。
4.這個里面詳細的介紹了各種情況下圓角的性能比較,最優(yōu)的處理本地圖片的圓角可以選擇第三種處理方案,如果說是通過網(wǎng)絡(luò)下載的圖片處理圓角的方案可參考網(wǎng)址:https://github.com/walkdianzi/DSRoundedImageArticle demo中的UIImage+DSRoundImage類中的處理方法。