seedante

Results 9 comments of seedante

@slemon 哪个版本,Swift 3 还是 Swift 2.2,你的测试环境?复现方式的第一个步骤松开断点,是什么意思?

@JiongXing 我在 iOS 10 的模拟器上快速测试了下,在动画控制器里的`animateTransition(using transitionContext: UIViewControllerContextTransitioning)`里进行对比验证,没有发现这个现象,依然维持原结论。 在 present 转场里,presentingView 是 fromView,`transitionContext.view(forKey: .from)`获取得到的是 nil;在 dismiss 转场里,presentingView 是 toView, `transitionContext.view(forKey: .to)`获取得到的依然是 nil。 请问你是如何测试的?

@JiongXing 非常抱歉,那段话有前提条件我没有加上,这段话在 Custom 模式下 Modal 转场下才成立,你的 Demo 里的模式是 .FullScreen(这是 modalPresentationStyle 的默认值),而我测试一直是在 .Custom 模式下,你在你的 Demo 里的 doModel() 里添加这行代码`vc.modalPresentationStyle = .custom`试试,就能观察到了。

@JiongXing 多谢你的反馈。

@TonyTong1993 听上去和第一个人反馈的问题一样,我需要更多的细节。

@jackhmy 我运行现在的这个 Demo 没有复现你说的问题。“使用UIView Animation Block 动画来做交互转场”,这个具体是什么情况?

@jackhmy 忘了说了,你的模拟器的版本是哪个?我的 Xcode 里只有 10.2 版本的模拟器,用这个版本测试没有这个问题。

@jackhmy 我现在没有条件测试这个版本,看你的说法和 ScrollTabBarController demo 里出现的问题相同,至于这个问题的本质原因我没法解释,但代码本身相当简单,在使用方法上也没有问题,我只能把这个锅推给 iOS 本身了。

@jackhmy 在写这篇文章时我对这个参数十分不解,文档里对这个参数的作用只是很笼统地说用于加快或是降低动画的速度,因此从来没有用过这个参数。正如你猜测的那样:这可能是需要在取消或者完成交互,转变非交互时有一个缓冲的动画。动画在交互/非交互之间转换时的确有个需要平滑过渡的问题,这是去年写的有关交互动画的文章:https://github.com/seedante/iOS-Note/wiki/Interactive-Animations。 那时我一直没有意识到交互转场里的这个问题如何着手解决,现在很清楚了,`completionSpeed`这个属性就是用来解决动画在交互/非交互状态之间切换时的平滑过渡问题的,怎么用,你贴的这个图就很清楚了,这个就比较坑了,关键的使用方法不放在文档里,却放在了框架的头文件里。那么,所有的交互转场动画都应该使用这个方法来确保不再出现黑屏的问题(现在很清楚了,就是动画状态不连贯造成的视图位置的突变)。多谢你的反馈。