Во-первых, вы хотите использовать [self setWantsLayer: YES]
. Кроме того, важно вызывать -setLayer:
до -setWantsLayer:
, если вы хотите предоставить определенный подкласс CALayer (такой как CAScrollLayer); если вам нужен обычный CALayer, просто позвоните -setWantsLayer:
, и он будет создан для вас. Еще лучше, просто отметьте опцию «хочет слой» в Интерфейсном Разработчике.
Во-вторых, весь смысл использования представления со слоем заключается в том, что вы можете продолжать использовать обычные методы NSView и получать бесплатные эффекты анимации анимации CoreAnimation. Если вы хотите использовать CoreAnimation в качестве единственного средства перемещения элементов, то правильный способ сделать это - создать представление на основе слоев, которое содержит иерархию представления в чистом CALayer.
Я не смотрел ни одного свободно доступного учебного пособия по CoreAnimation, но определенно могу порекомендовать книгу Прагматических программистов на эту тему . У них также есть скринкаст , доступный автору книги.