0

ナビゲーションコントローラーを使用して、あるビューコントローラーから別のビューコントローラーに移動するときにフェード効果を実現する方法

通常、プッシュするには次のようにします。

DetailViewController *obj= [[DetailViewController alloc]initWithNibName:@"DetailView" bundle:nil];
[self.navigationController pushViewController:obj animated:YES];

そしてポップする:

UINavigationController *navController = self.navigationController;

// retain ourselves so that the controller will still exist once it's popped off
 [[self retain] autorelease];

// Pop this controller and replace with another
[navController popViewControllerAnimated:YES];

しかし、ポップまたはプッシュするときにフェード効果が必要です.. plzは提案します

4

1 に答える 1

0

これはあなたが望む正確なコードではありませんが、あなたが望むアニメーションを行う方法を得ることができます

最初に、NOビューをプッシュおよびポップしながらアニメーションのパラメーターを渡す必要があり、このようなカスタムアニメーションを提供する必要があります

// Flash the screen white and fade it out to give UI feedback that a still image was taken
    UIView *flashView = [[UIView alloc] initWithFrame:[[self videoPreviewView] frame]];
    [flashView setBackgroundColor:[UIColor whiteColor]];
    [[[self view] window] addSubview:flashView];

    [UIView animateWithDuration:.4f
                     animations:^{
                         [flashView setAlpha:0.f];
                     }
                     completion:^(BOOL finished){
                         [flashView removeFromSuperview];
                     }
     ];

詳細な回答と適切な方法でのブロックの使用については、SO の他の質問に関するこの回答を参照してください。

その回答のコードの一部は次のとおりです

プッシュの場合:

MainView *nextView = [[MainView alloc] init];
[UIView animateWithDuration:0.75
                         animations:^{
                             [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
                             [super pushViewController:nextView animated:NO];
                             [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
                         }];

ポップの場合:

[UIView animateWithDuration:0.75
                         animations:^{
                             [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
                             [UIView setAnimationTransition:transition forView:self.navigationController.view cache:NO];
                         }];
[self.navigationController popViewControllerAnimated:NO];

@ijordanに感謝

問題のその他のヒントはこちら

これは、ナビゲーション コントローラーのアニメーションのカテゴリを提供するため、これを使用して余分なコーディングを行う必要のない優れた例の 1 つです。

于 2012-10-20T05:53:40.563 に答える