Вот мой код анимации:
CGFloat zDistance = 850;
CGFloat scaleFactor = BACK_COVER_WIDTH / self.transformLayer.bounds.size.width;
CATransform3D rotation = CATransform3DMakeRotation(M_PI, 0.0, 1.0, 0.0);
CATransform3D scale = CATransform3DMakeScale(scaleFactor, scaleFactor, 0.0);
CATransform3D transform = CATransform3DConcat(rotation, scale);
transform.m34 = 1.0 / -zDistance;
CGPoint location = CGPointMake(CGRectGetMidX(self.layer.frame), CGRectGetMidY(self.layer.frame));
[CATransaction begin];
[CATransaction setAnimationDuration:1.0];
self.transformLayer.transform = transform;
self.transformLayer.position = location;
[CATransaction commit];
self.transformLayer
- это CATransformLayer
с двумя подслоями, один для передней и другой для задней (я создаю эффект "перевернуть"). Однако этот код просто устанавливает положение и трансформируется без анимации. Поэтому я подумал, что, возможно, transform
не поддерживает неявную анимацию, поэтому я взял ее и просто попытался установить положение, но это тоже не анимировало (и я точно знаю, что position
поддерживает неявную анимацию). 1008 *
Я что-то не так делаю или CATransformLayer
просто не поддерживает неявную анимацию? Документация ничего не говорит о том, что она не поддерживает, поэтому я предполагаю, что это так.
РЕДАКТИРОВАТЬ: это для Mac OS X, а не iOS