UIStoryboardSegue:动画期间不显示视图

Posted

技术标签:

【中文标题】UIStoryboardSegue:动画期间不显示视图【英文标题】:UIStoryboardSegue: view is not displayed during animation 【发布时间】:2015-06-08 17:04:34 【问题描述】:

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

以下是截图:

动画场景:

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 工作得很好,但同时显示两个视图。

我认为在执行动画时视图未加载,但不知道如何解决。

【问题讨论】:

也许您在 viewDidAppear 中放错了 UI 代码?从技术上讲,它已经加载了,因为您调用了 self.destinationViewController.view 另外,我认为你应该在它的viewDidLoad中初始化secondViewController的frame。 【参考方案1】:

目标 vc 视图的初始位置设置不正确(假设您希望视图从右侧移入);您将其放置在屏幕下方,而不是屏幕右侧,

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

应该是这样的,

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

【讨论】:

以上是关于UIStoryboardSegue:动画期间不显示视图的主要内容,如果未能解决你的问题,请参考以下文章

UIStoryboardSegue 为子类中的属性设置动画

UIStoryboardSegue:顶视图没有向下滑动

在使用 hidesBottomBarWhenPushed 进行推送动画期间工具栏定位不正确

如何解决抽屉动画期间的显示撕裂问题

UIImageView 在动画期间显示相机以错误的方向拍摄的图像

在动作重定向 mvc 期间显示等待动画