3

メインビューのいくつかのボタンとコントローラーを使用して、画面の右側から画面にアニメーション化しようとしています。問題は、アニメーション化されず、完成した状態に直接移行することです。

これは私のコードです:

UIStoryboard* storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
options = [storyBoard instantiateViewControllerWithIdentifier:@"OptionsView"];
options.delegate = self;        
[self.view addSubview:options.view];
options.view.center = CGPointMake(floor(total_width+options.view.frame.size.width/2)+10, floor(total_height/2));

[UIView animateWithDuration:0.5
                      delay:0.0
                    options: UIViewAnimationOptionCurveEaseOut
                 animations:^{
                     options.view.center = CGPointMake(floor(total_width-options.view.frame.size.width/2)+10, floor(total_height/2));
                 } 
                 completion:^(BOOL finished){
                     NSLog(@"Done!");
                 }]; 

編集

さらに奇妙なことに、このアニメーションを別のアニメーションの完了ブロック内に配置すると、これは機能しますが、新しいアニメーションは機能しません。

    UIButton* boton = (UIButton*) sender;
    [UIView animateWithDuration:5.0
                          delay:0.0
                        options: UIViewAnimationOptionCurveLinear
                     animations:^{
                         boton.alpha = 0.0;

                         //Jumps directly to 0, animation doesn't work

                     } 
                     completion:^(BOOL finished){
                         [UIView animateWithDuration:0.5
                                               delay:0.0
                                             options: UIViewAnimationOptionCurveEaseInOut
                                          animations:^{
                                              options.view.center = CGPointMake(floor(total_width-options.view.frame.size.width/2)+10, floor(total_height/2));

                                              //It works now, but it doesn't take 5 seconds to start, it starts right away

                                          } 
                                          completion:^(BOOL finished){
                                              NSLog(@"Done!");
                                          }]; 

                     }];
4

1 に答える 1

3

呼び出しの前の行は、アニメーション化するのと同じ値にanimateWithDuration:...直接割り当てcenterます。それを削除するか、centerそこに初期値を割り当てます。開始値と終了値が同じアニメーションは、明らかに効果がありません。

于 2012-07-04T16:34:42.557 に答える