You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 19:29:00