我目前正在开发一个可拆卸的 AVPlayer,因此您可以使用平移手势将其拖放到 UIWindow 上的预定义拖放区域中。(我知道 iOS 9 会为我做到这一点……但我必须在 iOS 8 上做到这一点)
我做了所有的工作(移动和减小/增加播放器所在的 UIView 的大小)并且它与 UIView 配合得很好。但是,当我同时移动/更改 UIView 的大小时,此视图中的 AVPlayerLayer 真的很生涩。
所以这里有一个问题:如何以平滑的方式更新图层的框架?我尝试使用 setNeedsDisplayOnBoundsChange,将其设置为 YES。我还尝试实现 layoutSublayersOfLayer,在其中我将 AVPlayerLayer 的框架设置为 UIView 的边界。
两者都以滞后和真正不流畅的姿态结束。
注意:在一个非常基本的项目示例中,它就像一个魅力。(除了 2 个视图控制器,一个呈现播放器,我可以开始在 UIWindow 中拖动它......这很完美)。但是,在我当前的应用程序中,播放器也显示在其他所有内容之上,并且手势仅在图层上非常生涩。应用程序的其余部分由多个视图控制器组成,但在我使用播放器时没有执行任何操作。
有人知道如何使其完美运行吗?谢谢 :)
编辑:我正在使用自动布局。AVPlayerLayer 的父视图有 4 个约束:顶部、前导、宽度、高度......每次使用 pangesture 拖动它时,它们中的 4 个都会更新。UIView 具有正确的值。