diff --git a/damus/Views/Video/DamusVideoPlayer.swift b/damus/Views/Video/DamusVideoPlayer.swift index b0b06664..2ab8d3d1 100644 --- a/damus/Views/Video/DamusVideoPlayer.swift +++ b/damus/Views/Video/DamusVideoPlayer.swift @@ -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 } } }