Reputation: 683
I have used AVPlayer
to play video on my swift application. I want to place a Play button (custom button) at the middle of video. I know how to play and pause video on tapping the button.
I couldn't find how to show/hide the custom button when the video is played/paused from default buttons? Are there any listener or something which triggers when the video is played/paused?
I also want to hide the "Audio & Subtitles" icon from default control.
Upvotes: 3
Views: 6685
Reputation: 351
player init then,
self.player?.addObserver(self, forKeyPath: "rate", options: .new, context: nil)
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if self.player?.rate == 0 {
print("Pause")
}else {
print("Play")
}
}
Upvotes: 0
Reputation: 3251
Here is how you can listen to player state changes and hide/show buttons: (assume your player is named player
, and button is playButton
)
player.addObserver(self, forKeyPath: "rate", options: .New, context: nil) // somewhere after player init
...
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if keyPath == "rate" {
playButton.enabled = player.rate == 1
} else {
super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)
}
}
If rate of player is equal to 0 it means that video is not playing.
Upvotes: 3