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

我有一个 UIWebview,上面是一个 UIStackView。我想 hideshow 在 webview 中滚动时使用 animation 的 stackview,就像 chrome 浏览器中的效果一样。

我如何做到这一点?

P.S : 这个不行

iOS/Swift - Hide/Show UITabBarController when scrolling down/up

【问题讨论】:

    标签: ios uiwebview swift3 uistackview


    【解决方案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
                })
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      相关资源
      最近更新 更多