From 0eca98099356de5519ea73ee94261871e8e85b0b Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 16 Feb 2022 20:40:39 -0800 Subject: [PATCH] adjust scroll content offset when nav bar toggles --- .../Sources/Views/Article/WebAppViewCoordinator.swift | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apple/OmnivoreKit/Sources/Views/Article/WebAppViewCoordinator.swift b/apple/OmnivoreKit/Sources/Views/Article/WebAppViewCoordinator.swift index 56ac52396..e741a70f6 100644 --- a/apple/OmnivoreKit/Sources/Views/Article/WebAppViewCoordinator.swift +++ b/apple/OmnivoreKit/Sources/Views/Article/WebAppViewCoordinator.swift @@ -57,6 +57,8 @@ extension WebAppViewCoordinator: UIScrollViewDelegate { let yOffset = scrollView.contentOffset.y if yOffset == 0 { + let additionalOffset = (1 - navBarVisibilityRatio) * navBarHeight + scrollView.contentOffset.y += additionalOffset navBarVisibilityRatio = 1 return } @@ -78,12 +80,16 @@ extension WebAppViewCoordinator: UIScrollViewDelegate { func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { if decelerate, scrollView.contentOffset.y < (yOffsetAtStartOfDrag ?? 0) { + let additionalOffset = (1 - navBarVisibilityRatio) * navBarHeight + scrollView.contentOffset.y += additionalOffset navBarVisibilityRatio = 1 } yOffsetAtStartOfDrag = nil } - func scrollViewShouldScrollToTop(_: UIScrollView) -> Bool { + func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool { + let additionalOffset = (1 - navBarVisibilityRatio) * navBarHeight + scrollView.contentOffset.y += additionalOffset navBarVisibilityRatio = 1 return false }