5

目的のビュー コントローラーが上から下にスライドするように、カスタム セグエを作成しようとしています。

ドキュメントの例に従ってコードを書きました。

問題は、セグエが実行されると、ソース ビュー コントローラーが黒くなり、アニメーションが発生することです。ソースビューコントローラーが黒くなるのを防ぐにはどうすればよいですか?

(この回答で提示されたソリューションを既に実装しようとしましたが、移行後に画面が真っ暗になるか、ソース ビュー コントローラーに戻ります。)

これが私のコードです:

-(void)perform{

    UIViewController *splashScreen = self.sourceViewController;
    UIViewController *mainScreen = self.destinationViewController;

    //Place the destination VC above the visible area        
    mainScreen.view.center = CGPointMake(mainScreen.view.center.x,
                                          mainScreen.view.center.y-600);

    //Animation to move the VC down into the visible area
    [UIView animateWithDuration:1
                     animations:^{
                         mainScreen.view.center = CGPointMake(mainScreen.view.center.x, [[UIScreen mainScreen] bounds].size.height/2 );
                     }
     ];

    [splashScreen presentModalViewController:mainScreen animated:NO];
}
4

1 に答える 1

3

ソースView Controllerが隠されているように見える理由は、宛先View Controllerがすぐに表示されるためです.

カスタム セグエを作成している場合、両方のビューを同時に使用することはできません。あなたはどちらかできます

  • ビューコントローラーをプッシュし、ソースビューを宛先ビューコントローラーに追加してアニメーション化します
  • 宛先ビューをソースView Controllerに追加してアニメーション化し、View Controllerをプッシュします
  • 中間のView Controllerにプッシュし、両方のビューを追加し、アニメーション化し、宛先View Controllerにプッシュします。

上記のすべてのケースでビュー コントローラーをプッシュすると、代わりにビュー コントローラーをモーダルに表示できます。実際、それは中間のView Controllerソリューションにより適している可能性があります。

于 2012-07-30T11:18:39.697 に答える