CATransaction длительность не работает - PullRequest
0 голосов
/ 06 октября 2011

Я установил несколько преобразований CALayer и модификаций границ в транзакции CAT.Однако независимо от того, какой метод я использую (key-value, setAnimationDuration), анимация отсутствует, изменения выполняются, но сразу без перехода.У тебя есть идеи почему?Спасибо!

   /* CALayer*layer=[CALayer layer];
        layer.bounds =AnUIImageView.bounds;
        layer.contents=AnUIImageView.layer.contents;
        [AnotherUIImageView.layer addSublayer:layer];

        CGPoint thecentre=AnUIImageView.center;

        CALayer* layerInTarget=[AnotherUIImageView.layer.sublayers lastObject];
        [layerInTarget setPosition:[self.view convertPoint:thecentre toView:AnotherUIImageView]];
        AnUIImageView.layer.hidden=YES;

* / // приведенный выше код работает, я показываю, что он завершен

        [CATransaction begin];
        [CATransaction setValue:[NSNumber numberWithFloat:2.0f]
                         forKey:kCATransactionAnimationDuration];
       layerInTarget.position=[self.view convertPoint:AnotherUIImageView.center toView:AnotherUIImageView];
       layerInTarget.transform=CATransform3DMakeScale(0.6,0.6,0.6);
        [CATransaction commit];

1 Ответ

7 голосов
/ 06 октября 2011

CALayer s, которые связаны с UIView (например, к ним получают доступ через view.layer), не участвуют в неявных анимациях, независимо от того, как вы настроили CATransaction. Вам нужно либо использовать явную анимацию (используя соответствующий подкласс CAAnimation), либо использовать анимацию UIView.

...