0

アニメーションを使ってボタンをめくって拡大したい

コード:

[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];

このアニメーションには問題があります
。-ボタンが反転していますが、半円形の反転が行われた後、ボタンが拡大しています。
-ボタンをめくった後、ボタンの位置が正確ではありません。

どうすれば修正できますか?

4

2 に答える 2

0

setFrame を完全にコメントアウトしてみてください。うまく反転するはずです。また、キャッシュを NO に設定してみてください。ドキュメントによると、アニメーション自体の最中に遷移するビューを変更するべきではありません - cache:NO は役に立ちますが、それでも正しくありません。

通常、 setAnimationTransition 関数に指定された親ビューがあり、古い子を取得してサブビューから削除した直後に、新しい子を追加します。これにより、1 つの子サブビューが後ろに反転し、新しい子がフォーカスされているように見えます。遷移は、子を含む親で発生します。

いずれにせよ、setFrame を 1 分間コメント アウトしてみてください。

于 2011-08-21T07:01:15.443 に答える
0

どちらも別個のアニメーションであるため、アニメーションが完了すると呼び出される 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];
}
于 2011-08-21T07:24:54.160 に答える