Как сделать CGAffineTransform постоянным? - PullRequest
1 голос
/ 01 сентября 2011

Согласно этому ответу есть способ сделать CGAffineTransform постоянным:

iphone - сделать CGAffineTransform постоянным

, но это не объясняется ... ответ говорито копии, которая генерируется анимацией, но не ясно, как ее получить и присвоить исходному объекту, так что это код, как сделать его постоянным?

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];

[UIView setAnimationRepeatAutoreverses:NO];
[UIView setAnimationRepeatCount:1];

[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

float angleRadians = 180 * ((float)M_PI / 180.0f);
CGAffineTransform t = CGAffineTransformMakeRotation(angleRadians);

self.myView.transform = t;
[self.myView setCenter:CGPointMake(160, 220)];

[UIView commitAnimations];

Спасибо

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Вы можете попробовать перейти на уровень ниже Core Core Animation и применить анимацию преобразования со следующими свойствами:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
animation.fromValue = [NSValue valueWithCATransform3D: t];
animation.toValue = [NSValue valueWithCATransform3D: t];
animation.duration = 0.0;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeBoth;
[yourView.layer addAnimation:animation forKey:@"transform"];

Тогда вы можете делать другие основные анимации, и это должно сохранить преобразование. Не забудьте импортировать каркас QuartzCore.

0 голосов
/ 01 сентября 2011

В iOS 4.0 или более поздней версии Apple рекомендует использовать блочную анимацию

ссылка: Что такое блочная анимация в iPhone OS 4.0?

    [UIView animateWithDuration:0.3 
                      delay:0 
                    options:UIViewAnimationOptionCurveEaseOut 
                 animations:^{ self.myView.transform = CGAffineTransformMakeRotation(M_PI) } 
                 completion:NULL];

Неконечно, если это точно решит вашу проблему, но это шаг в правильном направлении.

...