Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:在UIWebview滚动上隐藏UIStackView_Ios_Uiwebview_Swift3_Uistackview - Fatal编程技术网

Ios Swift:在UIWebview滚动上隐藏UIStackView

Ios Swift:在UIWebview滚动上隐藏UIStackView,ios,uiwebview,swift3,uistackview,Ios,Uiwebview,Swift3,Uistackview,我有一个UIWebview,上面是一个UIStackView。我想隐藏并显示stackview,在webview中滚动动画,就像chrome浏览器中的效果一样 我如何做到这一点 附言:这个不行 ScrollView具有scrollViewDidScroll您可以使用它来检测滚动并使用方法动画(持续时间:时间间隔,动画:@escaping()->Swift.Void)从UIView更改堆栈视图的高度。这可能是最简单的解决方案 编辑: 如果您想更早地检测交互,请尝试ScrollViewWillBeg

我有一个UIWebview,上面是一个UIStackView。我想隐藏显示stackview,在webview中滚动动画,就像chrome浏览器中的效果一样

我如何做到这一点

附言:这个不行


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
            })
        }
    }
}

此方法工作正常,但只有在完成滚动后才能工作。我想在滚动过程中设置动画。此方法工作正常,但只有在滚动完成后才能工作。我想在滚动期间设置动画。