self
.blueview
.layer
.cornerradius = 5.f;
self
.blueview
.layer
.maskstobounds = yes;
這種方式會帶來兩個問題:
* 1. 當數量比較多的時候,這種新增圓角方式特別消耗效能,比如在uitableviewcell
新增過多圓角的話,甚至會帶來視覺可見的卡頓.
* 2. 無法配置圓角數量(只能新增view的四個角全為圓角),無法配置某個圓角大小.
第乙個問題實際上是由於數量太多的情況下,系統會頻繁的呼叫gpu的離屏渲染(offscreen rendering)機制,導致記憶體損耗嚴重.更多關於離屏渲染的詳解,可以看這裡,本文不多贅述.
第二個問題,我們可以使用uibezierpath
來完美解決.以下是示例**:
uibezierpath *maskpath = [uibezierpath bezierpathwithroundedrect:self
.blueview
.bounds byroundingcorners:uirectcornertopleft | uirectcornerbottomleft cornerradii:cgsizemake(20, 0)];
cashapelayer *masklayer = [[cashapelayer alloc] init];
masklayer.frame = self
.blueview
.bounds;
masklayer.path = maskpath.cgpath;
self
.blueview
.layer
.mask = masklayer;
self
.blueview
.layer
.cornerradius = 5.f;
self
.blueview
.layer
.maskstobounds = yes;
想要配置某個角為圓角的話,只需要指定對應的uirectcorner
即可以下是顯示效果: iOS開發Runtime那些事
objective c中的runtime是經常被問到的乙個問題,幾乎是面試大公司必問的乙個問題。當然還有一些其他問題也幾乎必問,例 如 runloop,block,記憶體管理等。本篇文章主要介紹runtime。runtime簡稱執行時。就是系統在執行的時候的一些機制,其中最主要的是訊息機制。對於c語...
iOS真機除錯那些事
一.證書 那ad hoc證書和開發證書區別在 如果你的tester 團隊測試人員 客戶 都能將測試裝置拿到你面前,直接插到你的mac開發機上,你可以直接將程式 灌 進去,那有開發證書就夠了,不需要ad hoc證書。如果tester的ios裝置不能直接讓你灌程式,那怎麼辦?你必須打包 archive ...
iOS 聊聊加密的那些事
情景 網頁載入快取可能會用到nsurlcache,每次請求會返回乙個urlcacheresponse.現在我們需要將每個url儲存在caches檔案中,為了加密,要對每個url使用md5加密技術。相應的 段是 const char cstr str utf8string unsigned char ...