iOS圓角那些事

2021-07-09 06:14:57 字數 1163 閱讀 9525

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 ...