NavigationControllerTransitionDemo 中的bug
jackhmy opened this issue · 7 comments
使用UIView Animation Block 动画来做交互转场,滑动一半松手后,会出现黑框闪屏
swift3、iOS10、simulator iPhone7
其实就是直接拿demo跑,并没有改动什么,在我这里出现了黑框闪屏的现象。后面看了ScrollTabBarController demo中似乎有类似的问题以及解决办法,在手势取消的那里加上delegate.interactionController.completionSpeed = 0.99就好了
@jackhmy 我现在没有条件测试这个版本,看你的说法和 ScrollTabBarController demo 里出现的问题相同,至于这个问题的本质原因我没法解释,但代码本身相当简单,在使用方法上也没有问题,我只能把这个锅推给 iOS 本身了。
@jackhmy 在写这篇文章时我对这个参数十分不解,文档里对这个参数的作用只是很笼统地说用于加快或是降低动画的速度,因此从来没有用过这个参数。正如你猜测的那样:这可能是需要在取消或者完成交互,转变非交互时有一个缓冲的动画。动画在交互/非交互之间转换时的确有个需要平滑过渡的问题,这是去年写的有关交互动画的文章:https://github.com/seedante/iOS-Note/wiki/Interactive-Animations。
那时我一直没有意识到交互转场里的这个问题如何着手解决,现在很清楚了,completionSpeed
这个属性就是用来解决动画在交互/非交互状态之间切换时的平滑过渡问题的,怎么用,你贴的这个图就很清楚了,这个就比较坑了,关键的使用方法不放在文档里,却放在了框架的头文件里。那么,所有的交互转场动画都应该使用这个方法来确保不再出现黑屏的问题(现在很清楚了,就是动画状态不连贯造成的视图位置的突变)。多谢你的反馈。