0

2 つのカスタム セグエ ファイルを作成しましたが、両方でperformメソッドをオーバーライドしました。ただし、カスタム セグエは新しいものを提示する場合にのみ機能しUIViewController、逆のものはアニメーション化せず、ソースを却下するだけのようですUIViewController

逆カスタム セグエ:

- (void)perform {
UIViewController *sourceViewController = self.sourceViewController;
    UIViewController *sourceTabBarController = sourceViewController.parentViewController.parentViewController;
    UIViewController *destinationViewController = self.destinationViewController;
    UIGraphicsBeginImageContext(destinationViewController.view.bounds.size);
        [destinationViewController.view.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *destinationViewControllerImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

    UIImageView *destinationViewControllerImageView = [[UIImageView alloc] initWithImage:destinationViewControllerImage];
    destinationViewControllerImageView.userInteractionEnabled = YES;
    destinationViewControllerImageView.frame = CGRectMake(0.0f, 0.0f, CGRectGetWidth(destinationViewController.view.frame), CGRectGetHeight(destinationViewController.view.frame));

[destinationViewController.view insertSubview:destinationViewControllerImageView atIndex:1];

// Add animations
    [UIView animateWithDuration:0.4f
                          delay:0.0f
                        options:UIViewAnimationOptionCurveEaseIn
                     animations:^{
                         destinationViewControllerImageView.center = CGPointMake(-CGRectGetWidth(destinationViewControllerImageView.frame) / 2, -(CGRectGetHeight(destinationViewControllerImageView.frame) / 2));
                     }
                     completion:nil];

    [sourceViewController dismissViewControllerAnimated:NO completion:nil];
}

前もって感謝します!

4

1 に答える 1

1

セグエは、View Controller の新しいバージョンを追加します。私が始めたとき、セグエを使用してView Controllerを閉じる際にいくつかの興味深い問題がありました。

カスタム セグエを記述する代わりに、「無視する」View Controller でカスタム アニメーション ブロックを使用する必要があります。

于 2012-08-14T15:32:03.240 に答える