AVPlayerLayer Popgesture小故障

时间:2018-07-18 21:47:12

标签: ios swift animation avplayerlayer

编辑:https://bitbucket.org/KevinvandenhoekBeast/avplayerlayerpopgesture/overview <-一个重现问题的简单示例项目,单击视频以推动detailviewcontroller,然后重新弹出。动画在NavigationAnimator中发生,而popgesture逻辑在NavigationInteractor中。 NavigationTransitioningView协议定义了动画师用来将视频从一帧过渡到另一帧的方法。

您好,其他开发人员,

在过去的几个晚上,我一直在挣扎着持久且100%可再现的动画故障。我一直在开发一个具有自定义导航过渡动画的应用程序,该动画可以同时使用两种方式(按入和弹出)。我进行的过渡是让UIView类型的对象在从一个视图过渡到另一个视图的过渡上下文中移动,到目前为止,它一直很好地使用我为两个涉及的视图控制器制定的协议进行工作,该协议使他们可以告诉动画师他们想要的视图过渡,以及它们各自与框架之间的过渡。

当用户单击集合中的图像时,我将它用于图像和视频播放器IE上。图像帧从原始视图控制器中的原点向应在detailViewController中占据的位置进行动画处理。播放视频播放器也是如此。当我只需按下视频播放器和图像的ViewController并弹出时,它就可以完美工作。但是,最近我实现了一个自定义弹出手势(带有UIPercentDrivenInteractiveTransition子类类)。弹出窗口似乎工作得很好,我一直在看一些精美的动画状态,直到我用视频播放器尝试了一下,然后恐怖开始了。

使用从一帧到另一帧进行动画处理的视频播放器进行弹出式操作时(如CGRect),会出现一些异常故障的行为。在很短的时间后,弹出手势几乎总是取消,通常进度约为0.1 ish(一个有趣的细节:如果我快速滑动手势就完成了,没有任何错误/故障),但是尽管弹出,弹出按钮仍(似乎)发生了,我又回到了以前的ViewController。这就是事情变得很时髦的地方。 ViewController的可见性/框架有所变化,例如存在一些裁剪(视图的一半被切掉),并且整个视图似乎都发生了移动(在我的情况下是向上的),并且通常重复该操作会使情况恶化。但是,轻击视图仍然会像视图处于其正常位置一样(不向上移动)做出响应。这使我相信这是一种层故障,当使用UIPercentDrivenInteractiveTransition为AVPlayerLayer设置动画时,会发生一些事情。

当我在动画时不更新包含视图的播放器图层的框架时,不会发生错误。同样,当我删除播放器的layerClass覆盖,并简单地添加一个AVPlayerLayer作为子图层(并在layoutSubviews调用中更新它的框架)时,我也没有遇到该错误,但是我得到了播放器图层立即跳转到的副作用这是最后一帧,尽管包含视图的动画效果正确。

我衷心希望有人对CALayers有更深的了解,也许能认识到这些症状,并希望能指出导致我真正原因的原因。预先非常感谢。

我有用,我愿意上传有关此问题的视频。

使用自定义UIPercentDrivenInteractiveTransition子类将AVPlayerLayer的layerClass的视图的frame属性从1 CGRect转换为另一个视图时,会在目标viewcontroller中发生非常奇怪的事情(其根视图在视觉上移动/更改帧/剪切,尽管触摸区域好像没有移动(即,IE点击collectionViewCell高亮显示/选择了上面的单元格),尽管在没有UIPercentDrivenInteractiveTransition子类popgesture处理的情况下使用时,完全相同的动画逻辑也可以正常工作。

0 个答案:

没有答案