Geek@Paris

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

2010-09-02

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这条线分割了。

Author:admin | Categories:Dev | Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *


Clickcha - The One-Click Captcha