如果视频已播放,关闭Swift iOS中的视频播放器子视图。

4
我尝试让视频播放器在视频播放后关闭。
 func playVideoPepper() {

        var maxVideoCount:Int =  5 //AnzahlderVideos
        var Random = Int(arc4random_uniform(maxVideoCount + 0))
        var VideoNumber = Random + 1


        let path = NSBundle.mainBundle().pathForResource("pepper\(VideoNumber)", ofType:"mp4")
        let url = NSURL.fileURLWithPath(path!)
        moviePlayer = MPMoviePlayerController(contentURL: url)
        if let player = moviePlayer {
            player.view.frame = self.view.bounds
            player.prepareToPlay()
            player.scalingMode = .AspectFill
            player.controlStyle = .None
            self.view.addSubview(player.view)
            var time = player.duration
            println(time)
        }

    }

我试图使用 .duration 或 .playableduration 获取其中一个视频(5个视频中的随机一个)播放的时间,但两者都给出了 0.00。是否有简单的方法让 SubView 在视频播放时被移除?

1个回答

8

您需要订阅MPMoviePlayerControllerMPMoviePlayerPlaybackDidFinishNotification。当播放器完成视频播放时,将发布此通知。

您可以在viewWillAppear方法中将控制器添加为观察者:

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("playerDidFinish:"), name: MPMoviePlayerPlaybackDidFinishNotification, object: player)

不要忘记从通知中心中删除控制器,这通常在viewWillDisappear方法中完成:

NSNotificationCenter.defaultCenter().removeObserver(self)

点击此处查看MPMoviePlayerController的文档。


我真的不确定如何订阅“通知”等内容,因为这只是一个为我的女儿制作的小项目(来自一位学习者):( - Fabian Boulegue
你可以使用 NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("playerDidFinish:"), name: MPMoviePlayerPlaybackDidFinishNotification, object: player) 订阅通知,这应该在 viewWillAppear 方法中完成,并且你应该在 viewWillDisappear 方法中删除控制器 NSNotificationCenter.defaultCenter().removeObserver(self) - Marius Fanu
你能将这个添加为帖子吗?我很想点赞它,这对其他人也会有很大的帮助,而不仅仅是作为评论存在。 - Fabian Boulegue
1
我已编辑我的回答,以反映那个评论中所说的内容。 - Marius Fanu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接