亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

新丰县| 轮台县| 巢湖市| 阿城市| 永丰县| 焦作市| 淄博市| 泸水县| 紫阳县| 云南省| 临高县| 阿克| 浪卡子县| 泾源县| 禹城市| 鄂托克旗| 高雄市| 邵东县| 浪卡子县| 来安县| 保康县| 桦川县| 南宁市| 襄垣县| 商城县| 大关县| 宣威市| 留坝县| 高陵县| 孝昌县| 绵竹市| 江门市| 德安县| 杭锦后旗| 许昌县| 九江市| 三明市| 应用必备| 当涂县| 布尔津县| 稻城县|