video: stop video in post when it disappears from view

Changelog-Fixes: Stop video when it disappears from view
This commit is contained in:
gladiusKatana
2023-06-08 19:44:40 -04:00
committed by William Casarin
parent 0b5d68c0b8
commit df20b67fc1

View File

@@ -43,25 +43,34 @@ struct DamusVideoPlayer: View {
}
var body: some View {
ZStack(alignment: .bottomTrailing) {
VideoPlayer(url: url, model: model)
.onAppear {
model.start()
GeometryReader { geo in
let localFrame = geo.frame(in: .local)
let localCenter = CGPoint(x: localFrame.midX, y: localFrame.midY)
let globalCenter = geo.frame(in: .global).origin.applying(.init(translationX: localCenter.x, y: localCenter.y))
let centerY = globalCenter.y
ZStack(alignment: .bottomTrailing) {
VideoPlayer(url: url, model: model)
if model.has_audio == true {
MuteIcon
.zIndex(11.0)
.onTapGesture {
self.model.muted = !self.model.muted
}
}
if model.has_audio == true {
MuteIcon
.zIndex(11.0)
.onTapGesture {
self.model.muted = !self.model.muted
}
}
}
.onChange(of: model.size) { size in
guard let size else {
return
.onChange(of: model.size) { size in
guard let size else {
return
}
video_size = size
}
.onChange(of: centerY) { _ in
let screenHeight = UIScreen.main.bounds.height
let screenMidY = screenHeight / 2
let tol = 0.20 * screenHeight /// tolerance - can vary to taste ie., % of screen height of a centered box in which video plays
model.play = centerY > screenMidY - tol && centerY < screenMidY + tol /// video plays when inside tolerance box
}
video_size = size
}
}
}