Ios Swift:在UIWebview滚动上隐藏UIStackView
我有一个UIWebview,上面是一个UIStackView。我想隐藏并显示stackview,在webview中滚动动画,就像chrome浏览器中的效果一样 我如何做到这一点 附言:这个不行Ios Swift:在UIWebview滚动上隐藏UIStackView,ios,uiwebview,swift3,uistackview,Ios,Uiwebview,Swift3,Uistackview,我有一个UIWebview,上面是一个UIStackView。我想隐藏并显示stackview,在webview中滚动动画,就像chrome浏览器中的效果一样 我如何做到这一点 附言:这个不行 ScrollView具有scrollViewDidScroll您可以使用它来检测滚动并使用方法动画(持续时间:时间间隔,动画:@escaping()->Swift.Void)从UIView更改堆栈视图的高度。这可能是最简单的解决方案 编辑: 如果您想更早地检测交互,请尝试ScrollViewWillBeg
ScrollView
具有scrollViewDidScroll
您可以使用它来检测滚动并使用方法动画(持续时间:时间间隔,动画:@escaping()->Swift.Void)
从UIView
更改堆栈视图的高度。这可能是最简单的解决方案
编辑:
如果您想更早地检测交互,请尝试ScrollViewWillBeginDraging(\uScrollView:UIScrollView)
。如果这也不能解决您的问题,请尝试创建您自己的自定义手势并将其添加到scrollview中。scrollview
具有scrollViewDidScroll
您可以使用它检测滚动并使用方法设置动画(持续时间:时间间隔,动画:@escaping()->Swift.Void)
从UIView
更改堆栈视图的高度。这可能是最简单的解决方案
编辑:
如果您想更早地检测交互,请尝试ScrollViewWillBeginDraging(\uScrollView:UIScrollView)
。如果这也不能解决您的问题,请尝试创建您自己的自定义手势,并将其添加到scrollview。在遵循Axel的建议后,我让它开始工作。
代码如下:
var lastContentOffset: CGPoint!
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
lastContentOffset = scrollView.contentOffset
}
func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
if lastContentOffset.y > scrollView.contentOffset.y {
print("Going up!")
if topBarStackView.isHidden == true{
UIView.animate(withDuration: 0.2, animations: {
self.topBarStackView.isHidden = false
})
}
} else {
print("Going down!")
if topBarStackView.isHidden == false {
UIView.animate(withDuration: 0.2, animations: {
self.topBarStackView.isHidden = true
})
}
}
}
在遵循阿克塞尔的建议后,我让它开始工作。
代码如下:
var lastContentOffset: CGPoint!
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
lastContentOffset = scrollView.contentOffset
}
func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
if lastContentOffset.y > scrollView.contentOffset.y {
print("Going up!")
if topBarStackView.isHidden == true{
UIView.animate(withDuration: 0.2, animations: {
self.topBarStackView.isHidden = false
})
}
} else {
print("Going down!")
if topBarStackView.isHidden == false {
UIView.animate(withDuration: 0.2, animations: {
self.topBarStackView.isHidden = true
})
}
}
}
此方法工作正常,但只有在完成滚动后才能工作。我想在滚动过程中设置动画。此方法工作正常,但只有在滚动完成后才能工作。我想在滚动期间设置动画。