中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ios中如何可以減少不必要的繪制

發布時間:2021-09-28 10:06:42 來源:億速云 閱讀:113 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“ios中如何可以減少不必要的繪制”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“ios中如何可以減少不必要的繪制”這篇文章吧。

  展示了一個-addBrushStrokeAtPoint:方法的升級版,它只重繪當前線刷的附近區域。另外也會刷新之前線刷的附近區域,我們也可以用CGRectIntersectsRect()來避免重繪任何舊的線刷以不至于覆蓋已更新過的區域。這樣做會顯著地提高繪制效率。

setNeedsDisplayInRect:來減少不必要的繪制

  UIKit的單線程天性意味著寄宿圖通暢要在主線程上更新,這意味著繪制會打斷用戶交互,甚至讓整個app看起來處于無響應狀態。我們對此無能為力,但是如果能避免用戶等待繪制完成就好多了。

  針對這個問題,有一些方法可以用到:一些情況下,我們可以推測性地提前在另外一個線程上繪制內容,然后將由此繪出的圖片直接設置為圖層的內容。這實現起來可能不是很方便,但是在特定情況下是可行的。CoreAnimation提供了一些選擇:CATiledLayer和drawsAsynchronously屬性。

  除了將圖層再次分割成獨立更新的小塊(類似于臟矩形自動更新的概念),CATiledLayer還有一個有趣的特性:在多個線程中為每個小塊同時調用-drawLayer:inContext:方法。這就避免了阻塞用戶交互而且能夠利用多核心新片來更快地繪制。只有一個小塊的CATiledLayer是實現異步更新圖片視圖的簡單方法。

  與CATiledLayer使用的異步繪制不相同

  iOS6中,蘋果為CALayer引入了這個令人好奇的屬性,drawsAsynchronously屬性對傳入-drawLayer:inContext:的CGContext進行改動,允許CGContext延緩繪制命令的執行以至于不阻塞用戶交互。

  它與CATiledLayer使用的異步繪制并不相同。它自己的-drawLayer:inContext:方法只會在主線程調用,但是CGContext并不等待每個繪制命令的結束。相反地,它會將命令加入隊列,當方法返回時,在后臺線程逐個執行真正的繪制。

  根據蘋果的說法。這個特性在需要頻繁重繪的視圖上效果最好(比如我們的繪圖應用,或者諸如UITableViewCell之類的),對那些只繪制一次或很少重繪的圖層內容來說沒什么太大的幫助。

以上是“ios中如何可以減少不必要的繪制”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ios
AI

四子王旗| 利川市| 湖州市| 寿阳县| 哈巴河县| 大名县| 福清市| 达尔| 图木舒克市| 固始县| 凤阳县| 林周县| 杭锦后旗| 元谋县| 大同市| 南投县| 罗山县| 汉阴县| 富裕县| 温州市| 寿宁县| 茶陵县| 布拖县| 什邡市| 金川县| 华容县| 铜鼓县| 安吉县| 图木舒克市| 台北市| 宁远县| 临猗县| 江孜县| 诸暨市| 阿合奇县| 岑溪市| 新邵县| 唐山市| 和平县| 灵寿县| 平度市|