Предотвращение масштабирования подслоев CALayer - PullRequest
2 голосов
/ 17 августа 2010

У меня есть несколько CALayers в размещенном представлении слоя.Каждый из этих слоев имеет дополнительные слои для (1) кнопки закрытия и (2) маркера изменения размера.Эти дополнительные «контрольные» слои добавляются в качестве подслоев к родительскому слою.

В настоящее время, когда я масштабирую рабочее пространство, в котором находятся эти слои, все масштабируется, включая эти контрольные слои.Однако я хотел бы предотвратить масштабирование этих управляющих слоев.

Есть ли способ переопределить поведение применения масштабных преобразований, применяемых ко всем подуровням, без необходимости переопределять метод drawInContext: для каждого слоя управления (предположительно, чтобы инвертировать любое существующее преобразование масштаба - при условии, что это возможно) и без необходимости вручную отправлять каждому из этих слоев управления setNeedsDisplay: с каждым увеличением?

Я нашел эту ветку, в которой обсуждается что-то подобное, но обсуждениеидет в направлении CATiledLayers, что здесь не то, что я ищу.

Перерисовка подкласса CALayer при масштабировании суперслоя

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

Как мне сохранить CALayer, подуровеньCATiledLayer, от изменения масштаба после увеличения?

1 Ответ

3 голосов
/ 14 декабря 2010

Я решил эту проблему, переопределив метод layoutSublayers моих пользовательских CALayers, получив накопленное масштабное преобразование иерархии слоев и применив обратное преобразование к подуровням управления.

...