展开viewForKey时为零(UITransitionContextFromViewKey)(Swift)

展开viewForKey时为零(UITransitionContextFromViewKey)(Swift),swift,uiview,Swift,Uiview,我正在尝试做一个自定义的过渡动画。我创建了一个符合UIViewControllerAnimatedTransitioning的动画对象: import UIKit class ViewControllerAnimator: NSObject, UIViewControllerAnimatedTransitioning { let duration = 1.0 func transitionDuration(transitionContext: UIViewControlle

我正在尝试做一个自定义的过渡动画。我创建了一个符合
UIViewControllerAnimatedTransitioning
的动画对象:

import UIKit

class ViewControllerAnimator: NSObject, UIViewControllerAnimatedTransitioning {

    let duration = 1.0

    func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval {
        return duration
    }

    func animateTransition(transitionContext: UIViewControllerContextTransitioning) {

        let fromView = transitionContext.viewForKey(UITransitionContextFromViewKey)!

        //Animate out
        UIView.animateWithDuration(duration, animations: { () -> Void in
            fromView.frame.origin.x -= 200
            }) { (Bool) -> Void in
                transitionContext.completeTransition(true)

        }

    }

}

尝试从视图设置
的帧时出错。它在试图强制打开零时崩溃。我做错了什么?为什么我的fromView为零?

如果其他人有此问题,请找到答案。我有
myViewController.modalPresentationStyle=.Custom
。出于某种原因,这似乎是一个bug,并导致它崩溃。此外,当设置了
transitionContext.completeTransition(true)
时,fromView控制器也没有从容器视图中正确删除。只需删除自定义演示样式行,它就会工作。

这是预期的行为:

如果-shouldRemovePresenterView返回“否”,则该视图 与UITransitionContextFromViewKey关联的在 演示这是一个提示,你的动画师应该 不能操纵显示视图控制器的视图。暂时 驳回,返回-提交的视图


错误出现在这里让fromView=transitionContext.viewForKey(UITransitionContextFromViewKey)@MuzahidulIslam博士是的。你知道为什么这里会有错误吗?因为你正试图强行打开nil值。如果让fromView=transitionContext.viewForKey(UITransitionContextFromViewKey){}否则{//handle nil value}是的,那么这样写这行。我的意思是为什么值为零?UITransitionContextFromViewKey上应该有一个视图。它适用于UITransitionContextToViewKey,但不适用于UITransitionContextFromViewKey。这实际上是一个swift错误。如果将代码转换为ObjC,它甚至可以使用.Custom表示样式:-(即使使用ObjC编写的代码,我在iOS 9上也会遇到这种行为。好(足够)的解决方法是
let fromView=transitionContext.viewController(forKey:.from)!.view!
因为有时需要设置
modalPresentationStyle
like来显示当前视图context@SuperDuperTangoiOS 12中仍然存在此漏洞。很不幸,在足够长的时间后,我一次又一次地遇到此问题,以至于忘记了解决方案。但是,你知道,一旦你发现了,你就在那里了再次感谢这个小小的宝石,因为苹果文档明确声明你应该设置自定义