video: stop video in post when it disappears from view
Changelog-Fixes: Stop video when it disappears from view
This commit is contained in:
committed by
William Casarin
parent
0b5d68c0b8
commit
df20b67fc1
@@ -43,25 +43,34 @@ struct DamusVideoPlayer: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
ZStack(alignment: .bottomTrailing) {
|
GeometryReader { geo in
|
||||||
VideoPlayer(url: url, model: model)
|
let localFrame = geo.frame(in: .local)
|
||||||
.onAppear {
|
let localCenter = CGPoint(x: localFrame.midX, y: localFrame.midY)
|
||||||
model.start()
|
let globalCenter = geo.frame(in: .global).origin.applying(.init(translationX: localCenter.x, y: localCenter.y))
|
||||||
}
|
let centerY = globalCenter.y
|
||||||
|
|
||||||
if model.has_audio == true {
|
ZStack(alignment: .bottomTrailing) {
|
||||||
MuteIcon
|
VideoPlayer(url: url, model: model)
|
||||||
.zIndex(11.0)
|
if model.has_audio == true {
|
||||||
.onTapGesture {
|
MuteIcon
|
||||||
self.model.muted = !self.model.muted
|
.zIndex(11.0)
|
||||||
}
|
.onTapGesture {
|
||||||
|
self.model.muted = !self.model.muted
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
.onChange(of: model.size) { size in
|
||||||
.onChange(of: model.size) { size in
|
guard let size else {
|
||||||
guard let size else {
|
return
|
||||||
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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user