Я просто настроил анимацию CALayer на NSView, который имеет вложенные подпредставления, NSScrollViews, и все работает нормально. Я думаю, что ограничение накладывается на перекрывающиеся представления. (Проблема с последним состоит в том, что нет определенного порядка рисования; непредсказуемо, какой вид будет отображаться сверху.)
Но если вы хотите применить преобразование также к подпредставлениям, вам придется настроить слои для них отдельно. Или, да, вы можете сбросить подпредставления и поместить все в CALayers одного представления. Вы можете контролировать их размер и размещение, используя свойства границ и положения. (Положение примечания от центра, а не внизу, если вы не измените точку привязки.)
Если вы делаете хостинг слоев, не применяйте ваше преобразование к корневому слою (view.layer). Вместо этого создайте новый CALayer, добавьте к нему содержимое, добавьте к нему преобразование и примените его в качестве подслоя к корневому слою. Избегайте работы с корневым слоем напрямую.
Быстрый пример настройки Layer-хостинга:
// Set up the root layer.
[[self.aViewController view] setLayer:[CALayer layer]];
[[self.aViewController view] setWantsLayer:YES];
// Set up a sublayer.
CALayer *sublayer = [CALayer layer];
[self.aViewController.view.layer addSublayer:sublayer];
// Repeat if you need additional sublayers. There's a name property if you need to distinguish between them.