CATiledLayer: определение levelOfDetail в режиме drawLayer - PullRequest
1 голос
/ 12 мая 2010

У меня есть CATiledLayer внутри UIScrollView, и все работает нормально. Теперь я хочу добавить поддержку отображения разных плиток для трех уровней масштабирования.

Я установил levelOfDetail на 3, и мой размер плитки составляет 300 x 300. Это означает, что мне нужно предоставить три набора плиток (я поставляю PNG) для покрытия: 300 x 300, 600 x 600 и 1200 x 1200.

Моя проблема в том, что внутри "(void) drawLayer: (CALayer *) слоя inContext: (CGContextRef) ctx" Я не могу определить, какой уровеньOODDtail в данный момент рисуется. Я могу получить границы, необходимые в настоящее время, используя CGContextGetClipBoundingBox, и обычно это запрашивает прямоугольник для одного из вышеуказанных размеров, но на краях слоя плитки обычно меньше, и поэтому это не очень хороший метод.

Как правило, если я установил levelOfDetail на 3, как мне узнать, запрашивает ли drawLayer уровень 1, 2 или 3 при его вызове?

Спасибо

Рассел.

1 Ответ

2 голосов
/ 12 мая 2010

Я в конце концов решил это.

Получите CTM из графического контекста и посмотрите на его масштаб (например, элемент a).

    CGAffineTransform transform = CGContextGetCTM (ctx);

    transform.a holds the zoom
...