Swift:在 UIWebview Scroll 上隐藏 UIStackView

Posted

技术标签:

【中文标题】Swift:在 UIWebview Scroll 上隐藏 UIStackView【英文标题】:Swift: Hide UIStackView on UIWebview Scroll 【发布时间】:2017-01-19 10:35:56 【问题描述】:

我有一个 UIWebview,上面是一个 UIStackView。我想 hideshow 在 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的主要内容,如果未能解决你的问题,请参考以下文章

在 UIWebView 中调整文本大小 - Swift 3

如何在 Swift 中的 UIWebView 中加载本地 PDF

使用swift在ios的Uiwebview中添加参数

Swift 2 - 无法在单独的 ViewController 中加载 UIWebView

在 Swift 的 iCarousel 中预览 UIWebView

如何在 Swift 3 的 UIWebview 中会话过期?