如何防止AVPlayerViewController中的videoGravity变化



我现在记性不好。我想我记得有一种方法可以防止AVPlayerViewController(或类似)的视频界面有按钮,允许用户切换视频重力设置,我认为这些基本上是两个;

  • .resizeAspect
  • .resizeAspectFill

用户也可以在屏幕上双击在两者之间切换。

我想做的是强制视频的AVPlayerViewController只使用。用.resizeAspect代替.videoGravity。我记得应该有一种方法可以做到这一点,在某个地方用一个简单的布尔开关,但不能找到它搜索15分钟。

这是我隐藏按钮的一种非常肮脏的方式。不幸的是,用户仍然可以使用手势(双击,捏)来缩放视频。正确的做法似乎是一个完整的自定义视图。

extension UIView {

var recursiveSubviews: [UIView] {
return subviews + subviews.flatMap { $0.recursiveSubviews }
}
}
class CustomPlayerViewController: AVPlayerViewController {

private func hideZoom() {
let zoomButton = view.recursiveSubviews.first(where: { $0.accessibilityLabel == "Zoom" })
zoomButton?.superview?.removeFromSuperview()
}

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
hideZoom()
}
}

最新更新