在我們平常的開發過程中,經常會用到各種視圖圓角的設置和需求問題,我平常用到的途徑可能有以下幾種:
1.這是我們經常使用的一種方法?
imageView.layer.cornerRadius = 5; ? imageView.layer.masksToBounds = YES;
在網上搜索的結果是:這樣設置會觸發離屏渲染,比較消耗性能,基本上都是這么說的, 我親身做了測試,如果說你設置圓角的只會視圖的情況下,使用這種方法進行視圖的圓角裁剪的,然后滑動的流暢度還是不錯的。
2.CAShapeLayer和UIBezierPath進行繪制和截取,代碼見圖
經過測試,不管是截取的是view還是用UIImageView寫入圖片,滑動的過程中卡頓特別嚴重,所以說在視圖中有多個設置圓角或者截取圓的視圖最好不要采取這種方式
3.這種情況下是直接對圖片進行的操作
這種測試后的性能相對來說會好很多,相當流暢,這個也是SDWebImage采用的方法 但是這種寫法僅限于展示圖片類操作,它不能操作imageView的截取。
4.這個里面詳細的介紹了各種情況下圓角的性能比較,最優的處理本地圖片的圓角可以選擇第三種處理方案,如果說是通過網絡下載的圖片處理圓角的方案可參考網址:https://github.com/walkdianzi/DSRoundedImageArticle demo中的UIImage+DSRoundImage類中的處理方法。