Анимация не работает, когда представление представлено с UIModalTransitionStyleFlipHorizont - PullRequest
1 голос
/ 20 марта 2012

Я пытаюсь сделать анимацию с изображением в моем представлении, но это не работает: мое изображение находится на конечной позиции без анимации.

UIImage *myImg = [UIImage imageNamed : @"Img72.png"];
UIImageView *myImgView =[ [UIImageView alloc] initWithImage: myImg ];
myImgView.frame= CGRectMake(250,50,72,72);
[self.view addSubview:myImgView];

[UIView animateWithDuration:0.5
                      delay: 0.0
                    options: UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                     [UIView setAnimationRepeatCount:100.0];
                     [UIView setAnimationRepeatAutoreverses:YES];
                     myImgView.frame= CGRectMake(50,250,72,72);
                 }
                 completion:NULL];
[myImgView release];

Тот же код анимации отлично работает в другом представлении. Я наконец обнаружил, что это происходит из-за того, как я отображаю представление с помощью этого кода:

FlipsideViewController *controller = [[[FlipsideViewController alloc] initWithNibName:@"FlipsideViewController" bundle:nil] autorelease];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; //KO
[self presentModalViewController:controller animated:YES];

Проблема в modalTransitionStyle. Когда я комментирую строку (с помощью // KO), она, наконец, работает. Я тестирую другой стиль перехода и все другие работы (UIModalTransitionStyleCoverVertical, UIModalTransitionStyleCrossDissolve, UIModalTransitionStylePartialCurl)

Я создал viewDidLoadProject (служебное приложение) и просто добавил код анимации в два вида в методе viewDidLoad.

Где проблема? Это ошибка Apple? Как я могу сделать флип-переход И мою анимацию, работающую во втором виде?

Вот мой пример проекта: http://dl.dropbox.com/u/9204589/testFlipAnimation.zip

1 Ответ

2 голосов
/ 20 марта 2012

Кажется более естественным начать играть с интерфейсом, когда все системные действия сделаны, didAppear должен использоваться для этой цели, я считаю (да, это работает:))

FlipsideViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

-(void)viewDidAppear:(BOOL)animated
{
    UIImage *myImg = [UIImage imageNamed : @"Img72.png"];
    UIImageView *myImgView =[ [UIImageView alloc] initWithImage: myImg ];
    myImgView.frame= CGRectMake(250,50,72,72);
    [self.view addSubview:myImgView];


    [UIView animateWithDuration:0.5
                          delay: 0.0
                        options: UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         [UIView setAnimationRepeatCount:100.0];
                         [UIView setAnimationRepeatAutoreverses:YES];
                         myImgView.frame= CGRectMake(50,250,72,72);
                     }
                     completion:NULL];
    [myImgView release];


    [super viewDidAppear:animated];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...