CATransaction (все еще) не анимация - PullRequest
1 голос
/ 21 августа 2010

У меня проблема, очень похожая на эту:

CATransaction Не анимация

Я просто пытаюсь анимировать слой вида с помощью CATransaction. Моя проблема в том, что преобразование применяется к представлению сразу.

Я попытался выполнить анимацию, используя executeSelector: withObject: afterDelay: без успеха.

Вот мой код:

- (void)viewDidLoad {
    [super viewDidLoad];

 view = [[[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)] autorelease];
 view.backgroundColor = [UIColor blackColor];
 [self.view addSubview:view];

 [self performSelector:@selector(animateView) withObject:nil afterDelay:0.1];
}

-(void) animateView {
 [CATransaction begin];
 [CATransaction setValue:[NSNumber numberWithFloat:3.0f] forKey:kCATransactionAnimationDuration];
    CALayer *layer = view.layer;
    layer.position = CGPointMake(20, 
         300);
    CATransform3D transform = CATransform3DMakeScale(2.0f, 2.0f, 1.0f);
    transform = CATransform3DRotate(transform, acos(-1.0f)*1.5f, 1.5f, 1.5f, 1.5f);
    layer.transform = transform;
    [CATransaction commit];
}

Кто-нибудь знает, что идет не так?

Спасибо, Винсент.

Ответы [ 2 ]

6 голосов
/ 21 августа 2010

при анимации заднего слоя представления вы должны находиться внутри UIView анимационного блока, а не только CATransaction:

[UIView beginAnimations:nil context:NULL];
// ... your animation code
[UIView commitAnimations];
0 голосов
/ 24 августа 2010

или вы можете использовать CAAnimationGroup и сгруппировать анимацию масштабирования и поворота, как это ..

CAAnimationGroup *aniGroup = [CAAnimationGroup animation];
// setup aniGroup properties

CABasicAnimation *scaleAnimation = [CABasicAnimation defaultValueForKey:@"transform.scale"];
scaleAnimation.fromValue = [NSNumber numberWithFloat:0.0];
scaleAnimation.toValue = [NSNumber numberWithFloat:1.0];
// setup scaleAnimation properties

CABasicAnimation *rotateAnimation = [CABasicAnimation defaultValueForKey:@"transform.rotate"];
// setup rotateAnimation properties
// ....

aniGroup.animations = [NSArray arrayWithObjects:rotateAnimation, scaleAnimation, nil];

[self.layer layoutIfNeeded];
[self.layer addAnimation:aniGroup forKey:@"myAnimation"];

Что-то в этом роде ... Может быть, не в точности копировать, вставлять и создавать.;)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...