在 iOS 中,我如何使用 Swift 以编程方式添加视频视图,然后在播放完毕后将其删除?

In iOS how do I programmatically add a video view and then remove it after it finishes playing using Swift?

我正在尝试在您进入主视图之前为应用程序制作一个小介绍视频。代码如下:

import UIKit
import MediaPlayer

class ViewController: UIViewController {

    var moviePlayer: MPMoviePlayerController?
    //var player: MPMoviePlayerController?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        playVideo()
        self.view.removeFromSuperview()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }



    func playVideo() {
        let path = NSBundle.mainBundle().pathForResource("paint-me_intro", ofType:"mp4")
        let url = NSURL.fileURLWithPath(path!)
        moviePlayer = MPMoviePlayerController(contentURL: url)
        if let player = moviePlayer {
            player.view.frame = self.view.bounds
            player.controlStyle = .None
            player.prepareToPlay()
            player.scalingMode = .AspectFit
            self.view.addSubview(player.view)
        }
    }
}

我只想让它在视频播放完毕后消失。就这样。在我把脸撞到墙上之前,任何帮助将不胜感激。

MPMoviePlayerController 使用通知进行消息传递,这与许多其他 类 的 delegate/protocol 模式不同。无论如何,回答你的问题。在您的视图中为适当的通知添加一个观察者确实加载,并指向一个删除视图的函数。

添加观察者

NSNotificationCenter.defaultCenter().addObserver(self, selector: "movieFinished", name:
        MPMoviePlayerPlaybackDidFinishNotification, object: nil)

以及删除它的函数。

func movieFinished() {
    moviePlayer!.view.removeFromSuperview()
    NSNotificationCenter.defaultCenter().removeObserver(self, name: MPMoviePlayerPlaybackDidFinishNotification, object: nil)
}