У меня есть интересная проблема, связанная с отношениями между родственными слоями в иерархии слоев Core Animation.Вот моя иерархия:
Animation layer: <CALayer: 0x7ccf060> <--- custom animation layer
Content view's sublayers: (
"<CALayer: 0x7e7db10>", <--- map view layer
"<CALayer: 0x7cbfe10>", <--- table view layer
"<CALayer: 0x7ccf060>" <--- custom animation layer
)
Итак, у меня есть несколько слоев в дереве слоев, один из которых является слоем, который я создаю для анимации (который содержит несколько подслоев, весь контент которых предоставляется из CGImageRef
).
Очевидно, что слой анимации - это брат, а не дочерний слой слоя табличного представления.Однако происходит то, что этот пользовательский слой анимации смещается прямо пропорционально contentOffset
представления таблицы, т. Е. Сколько я прокручивал.В моем случае слой анимации действительно является представлением изображения табличного представления.
Вот как выглядит табличное представление, прокручиваемое немного перед тем, как вставить слой анимации в качестве родственного элемента:
до http://f.cl.ly/items/0H3Q283V1Z2v0h0c3t10/iOS%20Simulator%20Screen%20shot%20Feb%2028,%202012%2010.47.42%20PM.png
И вот сразу после, когда я рендерил слой табличного представления в CGImageRef
и использовал его в качестве исходного содержимого для обычного CALayer
'contents
свойства:
после http://f.cl.ly/items/0U1b2L351T3J0j0j1t0F/iOS%20Simulator%20Screen%20shot%20Feb%2028,%202012%2010.29.30%20PM.png
Опять же, содержимое слоя является просто представлением изображения слоя табличного представления, поэтому я не вижу, как contentOffset
мог бы повлиять на этот другой слой вообще.Возможно, если бы я добавил слой в качестве подслоя слоя табличного представления, возможно, я бы увидел, где могут возникнуть проблемы.Но этот слой анимации является родственным слоем, так почему он на что-либо влияет?
Вот кадр слоя анимации, который я также зарегистрировал:
Animation layer's frame: {{0, 0}, {320, 372}}