Swift:在 UIWebview Scroll 上隐藏 UIStackView
Posted
技术标签:
【中文标题】Swift:在 UIWebview Scroll 上隐藏 UIStackView【英文标题】:Swift: Hide UIStackView on UIWebview Scroll 【发布时间】:2017-01-19 10:35:56 【问题描述】:我有一个 UIWebview,上面是一个 UIStackView。我想 hide 和 show 在 webview 中滚动时使用 animation 的 stackview,就像 chrome 浏览器中的效果一样。
我如何做到这一点?
P.S : 这个不行
ios/Swift - Hide/Show UITabBarController when scrolling down/up
【问题讨论】:
【参考方案1】:ScrollView
具有scrollViewDidScroll
,您可以使用它来检测滚动并使用UIView
中的animate(withDuration duration: TimeInterval, animations: @escaping () -> Swift.Void)
方法来更改StackView
的高度。这可能是最简单的解决方案。
编辑:
如果您想更早地检测交互,请尝试scrollViewWillBeginDragging(_ scrollView: UIScrollView)
。如果这也不能解决您的问题,请尝试创建自己的自定义手势并将其添加到滚动视图。
【讨论】:
这个方法可以正常工作,但只有在滚动完成后才能工作。我想在滚动期间制作动画。【参考方案2】:在遵循 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
)
【讨论】:
以上是关于Swift:在 UIWebview Scroll 上隐藏 UIStackView的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中的 UIWebView 中加载本地 PDF
Swift 2 - 无法在单独的 ViewController 中加载 UIWebView