将 AVPlayerViewController 嵌入到 UIView 中
Embedding an AVPlayerViewController into a UIView
我试图在 UIView 中播放视频,但视频播放器总是出现在我嵌入 AVPlayerViewController 的 UIView 之外。
以下是我目前所掌握的....
class ViewController: UIViewController {
let smallVideoPlayerViewController = AVPlayerViewController()
@IBOutlet weak var videoView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let myFileManager = FileManager.default
let mainBundle = Bundle.main
let resourcesPath = mainBundle.resourcePath!
guard let allItemsInTheBundle = try? myFileManager.contentsOfDirectory(atPath: resourcesPath) else {
return
}
let videoName = "test"
let videoPath = Bundle.main.path(forResource: videoName, ofType: "mp4")
let videoUrl = URL(fileURLWithPath: videoPath!)
smallVideoPlayerViewController.showsPlaybackControls = false
smallVideoPlayerViewController.player = AVPlayer(url: videoUrl)
videoView.addSubview(smallVideoPlayerViewController.view)
smallVideoPlayerViewController.view.frame = videoView.frame
smallVideoPlayerViewController.player?.play()
}
...
}
UIView的背景色设置为白色。从屏幕截图可以看出,AVPlayer 在 UIView 之外。
我尝试手动设置 AVPlayer 的尺寸和位置,但也没成功。
我正在使用 Xcode 9.2。该项目没有关于任何布局问题的警告。
如何完美对齐 AVPlayer,使其出现在 UIView 中。
谢谢
更改此行:
smallVideoPlayerViewController.view.frame = videoView.frame
对此:
smallVideoPlayerViewController.view.frame = videoView.bounds
原因是因为 videoView.frame 在其父视图中包含了您不想要的来源。 videoView.bounds 只是原点为 0,0 的大小。
当然,您可能想进一步设置自动调整大小蒙版以保持视频播放器帧不变,如下所示:
smallVideoPlayerViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
甚至可以进行全面的自动布局。
我试图在 UIView 中播放视频,但视频播放器总是出现在我嵌入 AVPlayerViewController 的 UIView 之外。
以下是我目前所掌握的....
class ViewController: UIViewController {
let smallVideoPlayerViewController = AVPlayerViewController()
@IBOutlet weak var videoView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let myFileManager = FileManager.default
let mainBundle = Bundle.main
let resourcesPath = mainBundle.resourcePath!
guard let allItemsInTheBundle = try? myFileManager.contentsOfDirectory(atPath: resourcesPath) else {
return
}
let videoName = "test"
let videoPath = Bundle.main.path(forResource: videoName, ofType: "mp4")
let videoUrl = URL(fileURLWithPath: videoPath!)
smallVideoPlayerViewController.showsPlaybackControls = false
smallVideoPlayerViewController.player = AVPlayer(url: videoUrl)
videoView.addSubview(smallVideoPlayerViewController.view)
smallVideoPlayerViewController.view.frame = videoView.frame
smallVideoPlayerViewController.player?.play()
}
...
}
UIView的背景色设置为白色。从屏幕截图可以看出,AVPlayer 在 UIView 之外。
我尝试手动设置 AVPlayer 的尺寸和位置,但也没成功。
我正在使用 Xcode 9.2。该项目没有关于任何布局问题的警告。
如何完美对齐 AVPlayer,使其出现在 UIView 中。
谢谢
更改此行:
smallVideoPlayerViewController.view.frame = videoView.frame
对此:
smallVideoPlayerViewController.view.frame = videoView.bounds
原因是因为 videoView.frame 在其父视图中包含了您不想要的来源。 videoView.bounds 只是原点为 0,0 的大小。
当然,您可能想进一步设置自动调整大小蒙版以保持视频播放器帧不变,如下所示:
smallVideoPlayerViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
甚至可以进行全面的自动布局。