CALayer анимации со сменой кадров?
У меня есть Калаер, который я добавил к своему представлению:
myView.myCALayer = [[CALayer alloc] init];
CGSize size = myView.frame.size;
myView.myCALayer.frame = CGRectMake(0, 0, size.width, size.height);
myView.myCALayer.backgroundColor = [[UIColor blackColor] CGColor];
[myView.layer addSublayer:myView.myCALayer];
Когда я пытаюсь изменить кадр CALayer после изменения кадра myView, размер CALayer анимируется. Я не добавил никакой анимации в CALayer, поэтому я не понимаю этого. Я даже попытался вызвать removeAllAnimations на слое перед изменением размера, и он все еще анимирует изменение размера.
Кто-нибудь знает, что здесь происходит?2 ответа:
На самом деле существует неявная анимация установки некоторых значений для CALayer. Вы должны отключить анимацию, прежде чем установить новый кадр.
[CATransaction begin]; [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; [myView.myCALayer.frame = (CGRect){ { 10, 10 }, { 100, 100 } ]; [CATransaction commit];