0

カスタム セグエのアニメーションが実行されているときに、宛先ビューが黒く表示されます。アニメーションが終了すると、ビューが表示され、見栄えがよくなります。

スクリーンショットは次のとおりです。

アニメーションシーン:

セグエ/アニメーションが終了した後の表示:

カスタム セグエ クラスは次のとおりです。

class SegueToPreview: UIStoryboardSegue {

override func perform() {
    // Assign the source and destination views to local variables.
    var firstVCView = self.sourceViewController.view as UIView!
    var secondVCView = self.destinationViewController.view as UIView!

    // Get the screen width and height.
    let screenWidth = UIScreen.mainScreen().bounds.size.width
    let screenHeight = UIScreen.mainScreen().bounds.size.height

    // Specify the initial position of the destination view.
    secondVCView.frame = CGRectMake(0.0, screenHeight, screenWidth, screenHeight)

    // Access the app's key window and insert the destination view above the current (source) one.
    let window = UIApplication.sharedApplication().keyWindow
    window?.insertSubview(secondVCView, aboveSubview: firstVCView)

    // Animate the transition.
    UIView.animateWithDuration(0.2, animations: { () -> Void in

        firstVCView.frame = CGRectOffset(firstVCView.frame, -screenWidth, 0.0)
        secondVCView.frame = CGRectOffset(secondVCView.frame, -screenWidth, 0.0)

        }) { (Finished) -> Void in
            self.sourceViewController.presentViewController(self.destinationViewController as! UIViewController,
                animated: false,
                completion: nil)
    }

}

unwind segue は問題なく動作し、両方のビューを表示します。

アニメーションの実行中にビューが読み込まれていないと思いますが、それを修正する方法がわかりません。

4

1 に答える 1

2

宛先 VC のビューの最初の位置が正しく設定されていません (ビューを右から移動させたい場合)。画面の右側ではなく、画面の下に配置します。

secondVCView.frame = CGRectMake(0.0, screenHeight, screenWidth, screenHeight)

これは、

secondVCView.frame = CGRectMake(screenWidth, 0, screenWidth, screenHeight)
于 2015-06-08T18:28:42.837 に答える