让AVPlayer视频内容显示在一个视图中的诀窍是什么?
我们正在使用以下AVPlayer代码,但屏幕上没有任何内容。我们知道视频就在那里,因为我们可以使用MPMoviePlayerController来显示它。
以下是我们使用的代码:
-std=c++14
我们是否为当前视图设置了不正确的图层?
答案 0 :(得分:9)
您需要设置图层的框架属性。 e.g:
self.playerLayer.frame = CGRectMake(0, 0, 100, 100)
如果您尝试了这个并且它在视图控制器的视图中不起作用,则可能是您尝试将图层的frame
属性设置为视图控制器frame
或{{1}在bounds
创建时{0, 0, 0, 0}
的属性。您需要在布局过程中设置播放器的框架,此时视图控制器的AVPlayerLayer
将设置为frame
以外的其他内容。要做到这一点:
如果您在自定义UIView(包括IB)中使用自动布局:
{0, 0, 0, 0}
如果您在自定义UIViewController中使用自动布局:
override func layoutSubviews() {
super.layoutSubviews()
//Match size of view
CATransaction.begin()
CATransaction.setDisableActions(true)
self.playerLayer.frame = self.bounds
CATransaction.commit()
}
override fun viewDidLayoutSubviews() {
//Match size of view-controller
CATransaction.begin()
CATransaction.setDisableActions(true)
self.playerLayer.frame = self.view.bounds
CATransaction.commit()
}
行将禁用图层帧更改的隐式动画。如果您想知道为什么通常不需要它,那是因为默认情况下支持UIView的图层不会隐式动画。在这种情况下,我们使用的是非视图支持图层(CATransaction
)
最佳路径是通过界面构建向视图控制器添加新视图,并在新添加的视图上设置自定义类。然后创建该自定义视图类并实现AVPlayerLayer
代码。
答案 1 :(得分:2)
事实证明,AVPlayer需要自己的上下文视图才能播放。
我们添加了此代码,现在视频播放了。不幸的是,与MPMoviePlayerController不同,AVPlayer没有内置控件。目前还不清楚苹果为什么不赞成使用非标准化视频播放选项的工具。
$("form.ajax-submit-createuser").find('input[name=formName]').val();