Я воссоздаю свою проблему на игровой площадке xCode, где приводятся примеры ошибок, с которыми я сталкиваюсь (показывается лучше при объяснении):
https://gist.github.com/Wowserman/c1910523ad85cf34d3e08150b65c7074
Моя проблема в том, что мой класс CALayer прекрасно отображает его, в этом .gif вы можете увидеть, что это, когда он впервые отображается (зеленый с тенью внизу) и чтобы было ясно, что он отображает так, как должен, но как только я начинаю анимировать высоту тени, вот в чем проблема.
Я анимировал shadowHeight
с 12,0 до 0,0 и перевернул эту анимацию, и анимация работает хорошо, за исключением , свойство color
может измениться на значение по умолчанию (Желтый) без моего намерения!
Вы можете видеть в этом gif, слой сначала визуализируется внутри, зеленый с тенью (что предназначено), затем, когда к виду обращаются, и слой анимирует сокращение тени (предназначено), но color
изменяет значение по умолчанию (желтый) во время анимации и после его завершения возвращается к собственному значению color
экземпляра. Анимация должна всегда иметь значение color
на протяжении всей анимации.
![enter image description here](https://i.stack.imgur.com/LNXr0.gif)
Я проверил, что свойство color
никогда не изменяется, у меня есть didSet наблюдатель, печатающий каждый раз, когда он изменяется, и он изменяется только во время инициализации, как и должно быть.
Затем я проверил draw(in ctx:)
метод CALayer , и там я увидел, что свойство color
отличается.
Еще одна возможная проблема, о которой я думал, может состоять в том, что слой drawsAsynchronously
верен, но после его переключения я определил, что это не проблема.
Моя проблема подведена :
Свойство color слоя незаметно изменяется во время анимации на значение свойства по умолчанию вместо значения, установленного при инициализации, что вызывает нежелательный рендеринг.