Как сохранить CALayer, подслой CATiledLayer, от изменения масштаба после увеличения? - PullRequest
3 голосов
/ 07 июня 2010

У меня есть CATiledLayer, который используется для отображения страницы PDF (этот CATiledLayer - это тип слоя моего UIView, который является подпредставлением UIScrollView).Я хочу добавить маркеры наложения на этой странице.Поэтому я добавляю подслой к своему CATiledLayer.Этот подслой снова содержит слои различных маркеров и действует как слой группировки.

Итак, графически я имею: (имейте в виду, что у меня есть несколько маркеров, которые также являются CALayers, это все-таки ascii art)

pdf page (CATiledLayer)
----------------------
|  CALayer           |
|  +---------+       |
|  |  +----+ |       |
|  |  |mker| |       |
|  |  +----+ |       |
|  +---------+       |
|                    |
----------------------

Я установил канонический drawLayer: inContext: в моем представлении для рисования PDF.

Когда я увеличиваю, чтобы получить больше деталей, PDF отображается правильно, но маркеры масштабируются,Независимо от того, что я делаю в границах CALayer, мои маркеры всегда становятся больше и кажутся неровными.

Я бы хотел, чтобы маркеры всегда были одного размера, как при инициализации и первом показе при рисовании вида.Это возможно ?или я использую неправильный подход?Должен ли я сделать специальное рисование для моего содержимого CALayer в drawLAyer: inContext: message?

Как видите, есть вещи, которые мне не хватает, чтобы решить мою проблему.Спасибо за любую помощь, которую вы оказываете.

1 Ответ

1 голос
/ 12 июня 2010

Маркер масштабируется, потому что он наследует преобразования суперслоя. Создайте другой верхний уровень CALayer, который содержит маркеры и другие объекты, которые вы не хотите масштабировать, и наложите его поверх CATiledLayer.

...