iOS開發(fā)篇小知識 - 如何好性能給UIImage繪制成圓角圖片

一.? 如果是這種方式的話 會強(qiáng)制core Anmation提前渲染屏幕的離屏繪制,離屏繪制會帶來性能上的耗損,從而會導(dǎo)致卡頓現(xiàn)象

正確的方式:

二.?使用了貝塞爾曲線"切割"個這個圖片, 給UIImageView 添加了的圓角,其實也是通過繪圖技術(shù)來實現(xiàn)的


三. 通過繪圖技術(shù)來實現(xiàn)的


使用drawRect有什么影響?

drawRect方法依賴Core Graphics框架來進(jìn)行自定義的繪制

缺點:它處理touch事件時每次按鈕被點擊后,都會用setNeddsDisplay進(jìn)行強(qiáng)制重繪;而且不止一次,每次單點事件觸發(fā)兩次執(zhí)行。這樣的話從性能的角度來說,對CPU和內(nèi)存來說都是欠佳的。特別是如果在我們的界面上有多個這樣的UIButton實例,那就會很糟糕了

這個方法的調(diào)用機(jī)制也是非常特別. 當(dāng)你調(diào)用 setNeedsDisplay 方法時, UIKit 將會把當(dāng)前圖層標(biāo)記為dirty,但還是會顯示原來的內(nèi)容,直到下一次的視圖渲染周期,才會將標(biāo)記為 dirty 的圖層重新建立Core Graphics上下文,然后將內(nèi)存中的數(shù)據(jù)恢復(fù)出來, 再使用 CGContextRef 進(jìn)行繪制

最后編輯于
?著作權(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)容