анимация скручивания страницы iPhone - PullRequest
5 голосов
/ 08 сентября 2010

Я пытаюсь инициировать переход скручивания страницы с помощью UIImageView в окне. Этот код в моем основном методе инициализации:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationDelay:delay];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDidStopSelector:@selector(animCompleteHandler:finished:context:)];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:splashImage cache:YES];

splashImage.frame = CGRectMake(-320, 0, 10, 10);
//[splashImage removeFromSuperview];

[UIView commitAnimations];

Изображение анимирует положение и размер, но без скручивания. Если я раскомментирую removeFromSuperView, он мгновенно исчезает. Есть идеи?

UPDATE:

Изменили код, чтобы он использовал Lars фантастически аккуратный способ запуска анимации, включая анимацию и обратный вызов ...

[UIView animateWithDuration:1.5
                      delay:delay
                    options: UIViewAnimationTransitionCurlUp 
                 animations:^{splashImage.alpha = 0;}
                 completion:^(BOOL finished){[splashImage removeFromSuperview];}
 ];

К сожалению, скручивание страницы просто не происходит. Это действительно исчезает все же.

Я не уверен, связано ли это с синтаксисом или с тем фактом, что SplashImage является классом UIImageView в объекте UIWindow моего основного представления. Возможно, он должен быть в UIView, чтобы создать переход.

Ответы [ 2 ]

8 голосов
/ 08 сентября 2010

Попробуйте что-то вроде:

[UIView transitionWithView:splashImage 
        duration:1.5 
        options: UIViewAnimationOptionTransitionCurlUp 
        animations^{
            splashImage.frame = CGRectMake(-320, 0, 10, 10);
        } 
        completion:^(BOOL finished){
            [splashImage removeFromSuperview];
            //animCompleteHandlerCode..
        }
];

Не проверено и возможно некоторые синтаксические ошибки, но попробуйте!

Или, может быть, это лучше:

[UIView animateWithDuration:1.5
        delay:delay
        options: UIViewAnimationOptionTransitionCurlUp 
        animations^{
            splashImage.frame = CGRectMake(-320, 0, 10, 10);
        } 
        completion:^(BOOL finished){
            [splashImage removeFromSuperview];
             //animCompleteHandlerCode..
        }
];
1 голос
/ 19 октября 2011

@ Ларсаронен: Спасибо за примеры, это было именно то, что мне было нужно!Я просто хотел простой скручивание страницы при первом отображении изображений, поэтому я использовал альфа 1.0 вместо 0 и установил обратный вызов завершения на nil:

// set a page curl animation for the specified UIImageView control
- (void) setAnimationPageCurl:(UIImageView *)imageView {

    [UIView transitionWithView:imageView 
                      duration:1.5 
                       options:UIViewAnimationOptionTransitionCurlDown 
                    animations:^ { imageView.alpha = 1.0; } 
                    completion:nil];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...