show nav bar when user taps the status bar

This commit is contained in:
Satindar Dhillon
2022-02-16 19:43:16 -08:00
parent 69c64aa390
commit e07a504daa

View File

@ -16,6 +16,12 @@ final class WebAppViewCoordinator: NSObject {
override init() {
super.init()
}
var navBarVisibilityRatio: Double = 1.0 {
didSet {
updateNavBarVisibilityRatio(navBarVisibilityRatio)
}
}
}
extension WebAppViewCoordinator: WKScriptMessageHandler {
@ -51,13 +57,13 @@ extension WebAppViewCoordinator: UIScrollViewDelegate {
if yOffset <= 0 {
isNavBarHidden = false
updateNavBarVisibilityRatio(1)
navBarVisibilityRatio = 1
return
}
if yOffset < navBarHeight {
let isScrollingUp = yOffsetAtStartOfDrag ?? 0 > yOffset
updateNavBarVisibilityRatio(isScrollingUp ? 1 : 1 - (yOffset / navBarHeight))
navBarVisibilityRatio = isScrollingUp ? 1 : 1 - (yOffset / navBarHeight)
return
}
@ -67,17 +73,26 @@ extension WebAppViewCoordinator: UIScrollViewDelegate {
let translation = yOffset - yOffsetAtStartOfDrag
let ratio = translation < navBarHeight ? 1 - (translation / navBarHeight) : 0
isNavBarHidden = ratio == 0
updateNavBarVisibilityRatio(ratio)
navBarVisibilityRatio = ratio
}
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if decelerate, scrollView.contentOffset.y < (yOffsetAtStartOfDrag ?? 0) {
updateNavBarVisibilityRatio(1)
navBarVisibilityRatio = 1
isNavBarHidden = false
}
yOffsetAtStartOfDrag = nil
}
func scrollViewShouldScrollToTop(_: UIScrollView) -> Bool {
if navBarVisibilityRatio == 1 {
return true
} else {
navBarVisibilityRatio = 1
return false
}
}
}
struct WebViewConfig {