show nav bar when user taps the status bar
This commit is contained in:
@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user