Fix gifv playback not continuing when returning from background
Closes #506
This commit is contained in:
parent
a818457f8c
commit
8322d3a36c
|
@ -22,6 +22,7 @@ class GifvPlayerView: UIView {
|
|||
|
||||
let controller: GifvController
|
||||
private var presentationSizeCancellable: AnyCancellable?
|
||||
private var wasPlayingWhenSceneBackgrounded = false
|
||||
|
||||
override var intrinsicContentSize: CGSize {
|
||||
controller.item.presentationSize
|
||||
|
@ -45,4 +46,30 @@ class GifvPlayerView: UIView {
|
|||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
override func willMove(toWindow newWindow: UIWindow?) {
|
||||
super.willMove(toWindow: newWindow)
|
||||
|
||||
if let oldWindow = window,
|
||||
let oldScene = oldWindow.windowScene {
|
||||
NotificationCenter.default.removeObserver(self, name: UIScene.didEnterBackgroundNotification, object: oldScene)
|
||||
NotificationCenter.default.removeObserver(self, name: UIScene.willEnterForegroundNotification, object: oldScene)
|
||||
}
|
||||
|
||||
if let newWindow,
|
||||
let newScene = newWindow.windowScene {
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(sceneDidEnterBackground), name: UIScene.didEnterBackgroundNotification, object: newScene)
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(sceneWillEnterForeground), name: UIScene.willEnterForegroundNotification, object: newScene)
|
||||
}
|
||||
}
|
||||
|
||||
@objc private func sceneDidEnterBackground() {
|
||||
wasPlayingWhenSceneBackgrounded = controller.player.rate > 0
|
||||
}
|
||||
|
||||
@objc private func sceneWillEnterForeground() {
|
||||
if wasPlayingWhenSceneBackgrounded {
|
||||
controller.play()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue