Xcode纯代码嵌入YouTube视频(不使用main.storyboard)代码失效问题
问题排查
你的代码存在3个核心问题导致YouTube播放器无法正常生效:
- 重复声明了两个
YTPlayerView实例:全局声明的playerView从未被初始化,你调用视频加载方法的对象是这个空实例,而真正被添加到界面上的myView从未执行过视频加载逻辑。 - 传入的视频ID末尾多了无效的
&字符,正确的视频ID为bsM1qdGAVbU,多余字符会导致YouTube接口无法匹配到对应视频。 - 自动布局约束逻辑错误:
myView的底部约束设置为距离安全区底部-500,配合顶部距离安全区顶部60的约束,在常规尺寸iPhone上会计算出负数的视图高度,播放器视图无法正常渲染。
修复后完整代码
import UIKit import youtube_ios_player_helper class ViewController: UIViewController { // 删除无用的空playerView实例,仅保留实际使用的播放器视图 private let playerView: YTPlayerView = { let player = YTPlayerView() player.translatesAutoresizingMaskIntoConstraints = false player.backgroundColor = .link return player }() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .cyan view.addSubview(playerView) setPlayerConstraints() // 给实际添加到界面的播放器实例加载正确ID的视频 playerView.load(withVideoId: "bsM1qdGAVbU") } private func setPlayerConstraints() { NSLayoutConstraint.activate([ playerView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 60), playerView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -60), playerView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 60), // 修正底部约束数值,保证播放器有正常显示高度 playerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -60) ]) } }
补充说明:如果运行后仍无法加载,可以给
playerView设置delegate,实现playerViewDidBecomeReady和playerView(_:receivedError:)代理方法监听加载状态,排查网络、API权限类问题。
内容的提问来源于stack exchange,提问作者AIRONE
相关产品推荐
相关产品推荐

