首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

查找完成时,AVPlayer显示加载指示器

AVPlayer是一个iOS平台上用于播放音视频文件的类。当AVPlayer开始加载媒体资源时,可以通过显示加载指示器来告知用户正在进行加载操作。

加载指示器通常是一个旋转的圆圈或其他动画效果,用于表示正在加载媒体资源。它的作用是让用户知道正在进行加载操作,以避免用户以为播放器已经卡住或无响应。

AVPlayer本身并不提供内置的加载指示器,开发者需要自行实现加载指示器的显示和隐藏逻辑。下面是一个示例代码片段,演示了如何在AVPlayer加载媒体资源时显示加载指示器:

代码语言:txt
复制
import AVKit

class ViewController: UIViewController {
    var player: AVPlayer?
    var playerViewController: AVPlayerViewController?

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建AVPlayer对象
        let videoURL = URL(string: "https://example.com/video.mp4")
        player = AVPlayer(url: videoURL!)
        
        // 创建AVPlayerViewController对象并设置player属性
        playerViewController = AVPlayerViewController()
        playerViewController?.player = player
        
        // 在视图中显示AVPlayerViewController
        addChildViewController(playerViewController!)
        view.addSubview(playerViewController!.view)
        playerViewController!.didMove(toParentViewController: self)
        
        // 监听AVPlayer的status属性,当为.readyToPlay时表示已加载完成
        player?.addObserver(self, forKeyPath: "status", options: .new, context: nil)
        
        // 显示加载指示器
        showLoadingIndicator()
        
        // 开始加载媒体资源
        player?.play()
    }

    // 监听AVPlayer的status属性变化
    override func observeValue(forKeyPath keyPath: String?,
                               of object: Any?,
                               change: [NSKeyValueChangeKey : Any]?,
                               context: UnsafeMutableRawPointer?) {
        if keyPath == "status" {
            if player?.status == .readyToPlay {
                // 隐藏加载指示器
                hideLoadingIndicator()
            }
        }
    }
    
    // 显示加载指示器
    func showLoadingIndicator() {
        let activityIndicator = UIActivityIndicatorView(style: .gray)
        activityIndicator.center = view.center
        activityIndicator.startAnimating()
        view.addSubview(activityIndicator)
    }
    
    // 隐藏加载指示器
    func hideLoadingIndicator() {
        view.subviews.filter { $0 is UIActivityIndicatorView }.forEach { $0.removeFromSuperview() }
    }
    
    deinit {
        player?.removeObserver(self, forKeyPath: "status")
    }
}

这是一个使用AVPlayer和AVPlayerViewController来播放网络视频,并在加载完成时显示和隐藏加载指示器的示例代码。开发者可以根据自己的需求,自定义加载指示器的样式和动画效果。

腾讯云相关产品推荐:腾讯云点播(云点播是一款专业的多媒体点播服务,为用户提供全面、稳定、高效的音视频处理、存储、分发服务。具体介绍和产品链接地址请参考腾讯云官方网站)。

请注意,以上答案仅供参考,具体实现方式和推荐的产品可能因实际需求和环境而有所不同。建议开发者根据自身情况进行调整和选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券