-1

私はxcodeを初めて使用しますが、解決策を探していて、さまざまな方法を試しましたが、どれも機能していません. アニメーションを追加して裏返しにしようとしています。UIButtonこれは、プログラムがロードされるときに発生するため、ユーザーはただ座って、たくさんのボタンが何度もめくるのを見ることができます。

私が抱えている問題は、プログラムがロードされるとすぐに別のビュー (ボタンが反転していることを示すため) が表示されるため、画面がロードされる前にアニメーションが発生しているように見えることですが、アニメーションが発生していることはわかりません。

私がやった事:

メイン ビュー コントローラーを作成しました。コントローラー内にはさまざまなサブビューがあり、それらのサブビュー内にはUIButtons. アニメーションに遅延を追加しようとしましたが、それでも修正されません。- (void)viewDidLoad. サブビューとボタンを作成してからアニメーション化するため、問題が発生する可能性があるかどうかはわかりませんサブビューを切り替えますが、それでも同じ問題が発生します。アニメーションは、プログラムの実行時ではなく、画面が読み込まれる前に発生しました。

私が行ったコードの一部をこれに添付しています。

CGRect button20subviewFrame = CGRectMake(242, 370, 70, 83);
UIView *button20subview = [[UIView alloc] initWithFrame:button20subviewFrame];
UIButton *button20 = [UIButton buttonWithType:UIButtonTypeCustom];
[button20 addTarget:self action:@selector(switchToDetailView:) forControlEvents:UIControlEventTouchDown];
[button20 setTitle:@"Button20" forState:UIControlStateNormal];
button20.frame = CGRectMake(0 , 0 , 70 , 83);
UIImage *button20Image = [UIImage imageNamed:@"t1.png"];
[button20 setImage:button20Image forState:UIControlStateNormal];
[button20subview addSubview:button20];
[self.view addSubview:button20subview];

UIButton *button21 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button21 addTarget:self action:@selector(switchToDetailView:) forControlEvents:UIControlEventTouchDown];
button21.frame = CGRectMake(0, 0, 70, 83);
UIImage *button21Image = [UIImage imageNamed:@"t2.png"];
[button21 setImage:button21Image forState:UIControlStateNormal];


//animation part
[UIView animateWithDuration:3 delay:2 options:UIViewAnimationTransitionFlipFromLeft animations:^{
    [button20 removeFromSuperview];
    [button20subview addSubview:button21];
}completion:^(BOOL finished){

}];

どんな助けでも大歓迎です。

ありがとうございました。

4

1 に答える 1

0

viewDidLoadが問題です。ビューの読み込みが完了したとき、つまり画面に表示される前に呼び出されます。viewDidAppearあなたが探していることをするべきです。

[button20 removeFromSuperview]これに加えて、アニメーションの実行中にボタンの前面が削除されないように、アニメーション完了ハンドラーを呼び出したい場合があります。

元:

[UIView animateWithDuration:3 delay:2 options:UIViewAnimationTransitionFlipFromLeft animations:^{
    [button20subview addSubview:button21];
}completion:^(BOOL finished){
     if(finished){
         [button20 removeFromSuperview];
     }
}];
于 2012-08-06T08:42:10.873 に答える