Отразить и увеличить размер анимации кнопки - PullRequest
0 голосов
/ 21 августа 2011

Я хочу перевернуть и развернуть кнопку с помощью анимации

Код:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:5.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:mybutton cache:YES];
[mybutton setFrame:CGRectMake(mybutton.frame.origin.x, mybutton.frame.origin.x, 200, 200)];
[UIView commitAnimations];

В этой анимации есть проблемы:
- кнопка переворачивается, но расширяется после полукруглого переворачиваниясделано.
- Положение кнопки после нажатия не точно.

Как это исправить?

Ответы [ 2 ]

0 голосов
/ 21 августа 2011

Поскольку они обе являются отдельными анимациями, вы также можете попробовать использовать AnimationDidStopSelector, который вызывается после завершения анимации;)

Да, кстати, в вашем CGRectMake вы используете для y-координаты x-координировать еще раз, что, вероятно, является причиной, почему местоположение не является точным ^^

, вот так:

- (void)yourFunction {
    [UIView beginAnimations:nil context:indexPath];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(functionEnded:finished:context:)];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:mybutton cache:YES];
    [UIView commitAnimations];
}

- (void)functionEnded:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
        [UIView beginAnimations:nil context:indexPath];
        [UIView setAnimationDuration:1.3];
        [mybutton setFrame:CGRectMake(mybutton.frame.origin.x, mybutton.frame.origin.y, 200, 200)];
        [UIView commitAnimations];
}
0 голосов
/ 21 августа 2011

Попробуйте полностью закомментировать setFrame, он должен перевернуться лучше.Также попробуйте установить кеш на NO.Согласно документации, вы не должны изменять представление, которое перемещается во время самой анимации - кеш: НЕТ поможет, но это все еще не правильно.

Обычно у вас есть родительское представление, которое передаетсяФункция setAnimationTransition, затем сразу после того, как вы берете старого потомка и удаляете его из подпредставления, затем добавляете нового потомка.Это создает иллюзию того, что одно дочернее подпредставление переворачивается сзади, а новый ребенок переворачивается.Переход происходит на родительском элементе, хотя он содержит дочерний элемент.

В любом случае, попробуйте закомментировать setFrame на минуту, и он должен выглядеть более согласованным.

...