研究了一下CATiledLayer的levelsOfDetail和levelsOfDetailBias的含義

來源:互聯網
上載者:User

http://gaohaijun.blog.163.com/blog/static/1766982712010112001652586/

要開發地圖的朋友或者對scrollview正在專研的朋友,這個應該很有用
levelsOfDetail是指,從UIScrollView的1倍zoomScale開始,能夠支援細節重新整理的縮小級數。每一級是上一級的1/2,所以假設levelsOfDetail = n,levelsOfDetailBias不指定的話,CATiledLayer將會在UIScrollView的zoomScale為以下數字時重新drawLayer
2^-1 -> 2^-2 -> ... -> 2^-n
也就是
1/2, 1/4, 1/8, 1/16, ... , 1/2^n

在levelsOfDetailBias不指定的情況下,zoomScale大於0.5後就不會再drawLayer,所以若繼續放大UIScrollView的話,畫面將越來越模糊。

這個時候levelsOfDetailBias就有用了。
levelsOfDetailBias = m表示,將原來的1/2,移到2^m倍的位置。
假設levelsOfDetail = n,levelsOfDetailBias = m的話,會有如下隊列:
2^m * 2^-1 -> 2^m * 2^-2 -> ... -> 2^m * 2^-n
簡化一下即
2^(m - 1) -> 2^(m - 2) -> 2^(m - 3) ->... -> 2^(m - n)

舉例,levelsOfDetail = 3,levelsOfDetailBias = 3,則你的UIScrollView將會在以下zoomScale時drawLayer
2^(3 - 1) -> 2^(3 - 2) -> 2^(3 - 3)
即4 -> 2 -> 1

特例是,levelsOfDetailBias > levelsOfDetail時,則每相差2倍就會drawLayer一下。

可以簡單理解成:
levelsOfDetail表示一共有多少個drawLayer的位置
levelsOfDetailBias表示比1大的位置裡有多少個drawLayer的位置(包括1)

以上若還沒看懂的話,以下是圖(點開看原始大小)
圖中灰色的格子表示跨界的格子,它們本來是同一個格子,被1這條線分割了。
  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.