
IOS
<IOS 7 MPMoviePlayerController 向前搜索按钮将视频带到结尾并显示黑屏
在 IOS 7 中,MPMoviePlayerController 是一个常用的视频播放控件。然而,有一种情况是,当用户在播放视频时点击了向前搜索按钮,有时会导致视频直接跳到结尾并显示黑屏,这是一个令人困扰的问题。这个问题通常发生在 IOS 7 上,在后续的 IOS 版本中已经修复。但是,如果你的应用程序仍然需要支持 IOS 7,那么你可能需要考虑解决这个问题。问题的原因问题的原因是 IOS 7 MPMoviePlayerController 在处理向前搜索时存在一个 bug。当用户点击向前搜索按钮时,视频会跳转到某个时间点,但是在某些情况下,视频会直接跳到结尾并显示黑屏。这可能是由于在跳转时计算时间点的逻辑错误导致的。解决方案为了解决这个问题,我们可以通过监测向前搜索按钮的点击事件,并手动进行视频跳转来规避 bug。首先,我们需要添加一个观察者来监听 MPMoviePlayerPlaybackDidFinishNotification 通知。这个通知会在视频播放结束时触发。SwiftNotificationCenter.default.addObserver(self, selector: #selector(moviePlaybackDidFinish), name: .MPMoviePlayerPlaybackDidFinish, object: nil)接下来,我们需要在 moviePlaybackDidFinish 方法中处理视频播放结束的逻辑。我们可以检查视频是否已经播放到结尾,如果是的话,我们可以将视频的当前时间设置为一个稍微短一些的时间点,以避免黑屏。
Swift@objc func moviePlaybackDidFinish(notification: NSNotification) { guard let player = notification.object as? MPMoviePlayerController else { return } if player.currentPlaybackTime == player.duration { player.currentPlaybackTime = player.duration - 1 }}通过将当前播放时间设置为视频结尾前的一个时间点,我们可以避免黑屏问题的发生。案例代码下面是一个完整的示例代码,演示了如何解决 IOS 7 MPMoviePlayerController 向前搜索按钮导致黑屏的问题。Swiftimport MediaPlayerclass ViewController: UIViewController { var moviePlayer: MPMoviePlayerController! override func viewDidLoad() { super.viewDidLoad() let vIDEOPath = Bundle.mAIn.path(forResource: "vIDEO", ofType: "mp4") let vIDEOURL = URL(fileURLWithPath: vIDEOPath!) moviePlayer = MPMoviePlayerController(contentURL: vIDEOURL) moviePlayer.view.frame = view.bounds view.addSubview(moviePlayer.view) NotificationCenter.default.addObserver(self, selector: #selector(moviePlaybackDidFinish), name: .MPMoviePlayerPlaybackDidFinish, object: nil) moviePlayer.play() } @objc func moviePlaybackDidFinish(notification: NSNotification) { guard let player = notification.object as? MPMoviePlayerController else { return } if player.currentPlaybackTime == player.duration { player.currentPlaybackTime = player.duration - 1 } }}以上就是解决 IOS 7 MPMoviePlayerController 向前搜索按钮导致黑屏的问题的解决方案。通过手动处理视频播放结束的逻辑,我们可以避免黑屏问题的发生,并提供更好的用户体验。如果你的应用程序仍然需要支持 IOS 7,那么这个解决方案可能会对你有所帮助。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号