YoutubePlayerView
YoutubePlayerView
是一个开源库,帮助您将 YouTube iframe 播放器嵌套到 iOS 应用程序中。该库创建一个 WKWebView
和桥梁,在您的应用程序的 Swift 代码和 YouTube 播放器的 JavaScript 代码之间,从而允许 iOS 应用程序控制 YouTube 播放器。
示例
为了运行示例项目,首先克隆仓库,然后从示例目录运行 pod install
需求
安装
通过 CocoaPods 安装库
可以通过CocoaPods获取YoutubePlayerView。要安装它,只需将以下行添加到您的Podfile中:
pod 'YoutubePlayerView'
在命令行提示符下,输入pod install
以更新您的工作空间,并添加依赖项。
提示:请记住,在CocoaPods中使用时,您必须在Xcode中打开.xcworkspace
文件,而不是.xcodeproj
文件。
手动安装库
该库也可以轻松手动安装。您可以点击GitHub下载链接下载源代码或克隆存储库。一旦您有了代码的本地副本,请按照以下步骤操作:
-
在Xcode或Finder中打开示例项目。
-
选择
YoutubePlayerView.swift
和YoutubePlayerExtras.swift
。如果您在Xcode中打开工作空间,它们将位于Pods -> Development Pods -> YoutubePlayerView
下。在Finder中,它们位于项目根目录下的Classes
目录中。 -
将这些文件和文件夹拖到您的项目中。请确保选中了
Copy items into destination group’s folder
选项。
使用方法
开始加载视频
要开始播放YouTube视频,请按照以下步骤操作:
- 在界面构建器中,将一个
UIView
拖动到场景中。 - 选择Identity Inspector,将视图的类更改为
YoutubePlayerView
。 - 在界面构建器中为该视图创建一个指向您视图控制器的
IBOutlet
,并命名为playerView
。 - 现在在您的视图控制器的
viewDidLoad
方法中添加以下代码
playerView.loadWithVideoId("GC5V67k0TAA")
编译并运行,视频加载后点击它以播放视频。
控制视频播放
您还可以使用loadWithVideoId(_ : with:)
方法将额外参数传递给视图。有关参数的更多信息,请访问播放器参数。
要使用额外的参数进行试验,你可以用这段代码替换你的代码:
let playerVars: [String: Any] = [
"controls": 1,
"modestbranding": 1,
"playsinline": 1,
"rel": 0,
"showinfo": 0,
"autoplay": 1
]
playerView.loadWithVideoId("GC5V67k0TAA", with: playerVars)
还可以使用方法来控制播放过程。
func play()
func pause()
func stop()
func seek(to: allowSeekAhead:)
处理播放器回调
库提供了一个协议 YoutubePlayerViewDelegate
来处理回调。你的类可以遵守这个协议并将 playerView
的 delegate
设置为这个类。
extension ViewController: YoutubePlayerViewDelegate {
func playerViewDidBecomeReady(_ playerView: YoutubePlayerView) {
print("Ready")
playerView.play()
}
func playerView(_ playerView: YoutubePlayerView, didChangedToState state: YoutubePlayerState) {
print("Changed to state: \(state)")
}
func playerView(_ playerView: YoutubePlayerView, didChangeToQuality quality: YoutubePlaybackQuality) {
print("Changed to quality: \(quality)")
}
func playerView(_ playerView: YoutubePlayerView, receivedError error: Error) {
print("Error: \(error)")
}
func playerView(_ playerView: YoutubePlayerView, didPlayTime time: Float) {
print("Play time: \(time)")
}
}
现在设置播放视图的代理
playerView.delegate = self
作者
Mukesh Yadav, [email protected]
许可证
YoutubePlayerView 可在 MIT 许可下使用。更多信息请参阅 LICENSE 文件。