高效新增圓角效果

2022-09-02 16:06:15 字數 1056 閱讀 5546

邏輯思路: 切換到工作執行緒利用coregraphic api生成乙個offscreen uiimage,再切換到main thread賦值給uiimageview。這裡還涉及到uiimageview復用,圓角頭像cache快取(不能每次都去繪製)

設定圓角,最簡單的情況下既沒有 off-screen render,也沒有降低幀數

view.layer.cornerradius = 5
但是 cornerradius 這個屬性只會影響背景顏色和border,對於內部還有子檢視控制項就不會出現這樣的效果了所以這時候需要:

label.layer.cornerradius = 5

label.layer.maskstobounds = true

這時候就會出現離屏渲染了,當圓角檢視較多時,就會使fps大幅度下降

利用core graphics自己畫出了乙個圓角矩形uiimage。除了一些必要的**外,最核心的就是 cgcontextaddarctopoint 函式。它中間的四個引數表示曲線的起點和終點座標,最後乙個引數表示半徑。呼叫了四次函式後,就可以畫出圓角矩形。最後再從當前的繪圖上下文中獲取並返回。

func kt_drawrectwithroundedcorner(radius radius: cgfloat,

borderwidth: cgfloat,

backgroundcolor: uicolor,

bordercolor: uicolor) -> uiimage

extension uiview 

}

無論使用上面哪種方法,你都需要小心使用背景顏色。因為此時我們沒有設定 maskstobounds,因此超出圓角的部分依然會被顯示。因此,你不應該再使用背景顏色,可以在繪製圓角矩形時設定填充顏色來達到類似效果。

textview圓角效果

在開發android應用的時候,經常出現矩形textview 很不美觀,想把它變成圓角,怎麼辦呢,請看下面 首先在drawable檔案下建乙個corner view.xml檔案 如下 solid為填充顏色,如果不寫,將是預設的黑色,我這裡設定成白色 然後把你的textview例項物件呼叫 msign...

android 圓角效果

最近做乙個效果,要乙個上邊兩個角為圓角,下面兩個角為直角的四邊形白色背景 如下圖 這裡用到了shape屬性中的corners 屬性,api原文中是這樣 單一設定android radius integer 時,表示四個角都為integer畫素的圓角 這裡我開始的時候這樣設定了四個屬性 結果發現四個角...

也說說圓角效果

看了許多的精彩 當然是個有個精彩的!但圓角效果幾乎是大家共同的喜好。原因可能是圓角,實現技術不難,對 的整體效果改善卻是顯而易見的。我也有過一些嘗試,但都不算完滿的。從css加到純css,再到js封裝的圓角,對vml,對css sprites 非圓角技術 的嘗試。個個都好,但也個個都有不好的地方。j...