0

当我的自定义 segue 动画正在执行时,目标视图显示为黑色。动画结束后,视图出现并且看起来不错。

以下是截图:

动画场景:

segue/动画完成后查看:

这是自定义 segue 类:

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 回答