У меня есть несколько CALayers в режиме размещения на уровне. Каждый из этих слоев имеет дополнительные слои для удержания (1) кнопку закрытия и (2) ручку изменения размера. Эти дополнительные «контрольные» уровни добавляются как подслои к родительскому слою.Предотвращение подуровней CALayer от масштабирования
В настоящее время, когда я увеличиваю рабочее пространство, в котором находятся эти слои, все масштабы - включая эти уровни управления. Однако я бы хотел, чтобы эти уровни управления не масштабировались.
Есть ли способ переопределить поведение, когда масштабные преобразования применяются ко всем подслоям, без необходимости переопределять метод drawInContext: для каждого уровня управления (предположительно, чтобы инвертировать любое существующее масштабируемое преобразование - если это возможно) и без необходимости вручную посылать каждый из этих уровней управления setNeedsDisplay: с каждым увеличением?
Я нашел эту тему, которая обсуждает что-то подобное, но обсуждение идет в сторону CATiledLayers, и это не то, что я ищу здесь.
Redrawing CALayer subclass when super layer is scaled
Кроме того, этот пост задает несколько связанный с этим вопрос, но ответы не относятся к моей ситуации, так как я не могу наложить управления - они должны быть частью иерархии слоев.
How do I keep a CALayer
, sublayer of a CATiledLayer
, from changing it's scale after a zoom?
Я решил решить эту проблему, переопределив метод layoutSublayers своих пользовательских CALayers, получив накопленный масштабный масштаб иерархии слоев и применив обратное преобразование к подслоям управления. – Dalmazio