一.? 如果是這種方式的話 會強(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)行繪制