Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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 如何在滚动时隐藏UIView?_Ios_Objective C_Swift_Uiview_Uiscrollview - Fatal编程技术网

Ios 如何在滚动时隐藏UIView?

Ios 如何在滚动时隐藏UIView?,ios,objective-c,swift,uiview,uiscrollview,Ios,Objective C,Swift,Uiview,Uiscrollview,我正在努力达到这个效果 我试图在用户向上滚动时隐藏视图,在用户向下滚动时显示视图 我不知道该怎么办。 我尝试过使用scrollView的didScroll功能,但我不知道如何设置它。有什么建议吗?您需要将滚动视图的容器视图和要隐藏的视图设置为滚动视图的委托,注册此类以符合UIScrollViewDelegate协议 您还需要跟踪滚动视图的“内容偏移量”属性,并将其设置为创建滚动视图时的初始偏移量: fileprivate var scrollOffset : CGPoint 然后,如您所说,使

我正在努力达到这个效果

我试图在用户向上滚动时隐藏视图,在用户向下滚动时显示视图

我不知道该怎么办。
我尝试过使用scrollView的didScroll功能,但我不知道如何设置它。有什么建议吗?

您需要将滚动视图的容器视图和要隐藏的视图设置为滚动视图的委托,注册此类以符合UIScrollViewDelegate协议

您还需要跟踪滚动视图的“内容偏移量”属性,并将其设置为创建滚动视图时的初始偏移量:

fileprivate var scrollOffset : CGPoint
然后,如您所说,使用scrollViewDidScroll方法:

internal func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let delta : CGPoint = CGPoint(x: scrollView.contentOffset.x - scrollOffset.x, 
        y: scrollView.contentOffset.y - scrollOffset.y)

    if delta.y > 0, subviewToFade.isDescendant(of: self) {
           // fade out subviews and remove
    else if delta < 0, !subviewToFade.isDescendant(of: self) {
           // add subviews and fade back in

    }

    scrollOffset = scrollView.contentOffset
}

希望有帮助。

您需要将滚动视图的容器视图和要隐藏的视图设置为滚动视图的委托,注册此类以符合UIScrollViewDelegate协议

您还需要跟踪滚动视图的“内容偏移量”属性,并将其设置为创建滚动视图时的初始偏移量:

fileprivate var scrollOffset : CGPoint
然后,如您所说,使用scrollViewDidScroll方法:

internal func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let delta : CGPoint = CGPoint(x: scrollView.contentOffset.x - scrollOffset.x, 
        y: scrollView.contentOffset.y - scrollOffset.y)

    if delta.y > 0, subviewToFade.isDescendant(of: self) {
           // fade out subviews and remove
    else if delta < 0, !subviewToFade.isDescendant(of: self) {
           // add subviews and fade back in

    }

    scrollOffset = scrollView.contentOffset
}
希望有帮助

请检查此库,它与附加的gif完全相同

另一种方法是从你所附的gif文件。 在顶部添加搜索栏。将隐藏部分作为标题,并对齐搜索栏和tableview以获得动画

请检查此库,它与附加的gif完全相同

另一种方法是从你所附的gif文件。 在顶部添加搜索栏。将隐藏部分作为标题,并对齐搜索栏和tableview以获得动画

我是这样解决的:

private var lastContentOffset: CGFloat = 0

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
   lastContentOffset = scrollView.contentOffset.y
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if lastContentOffset > scrollView.contentOffset.y {
        UIView.animate(withDuration: 0.25, animations: { [weak self] in
            self?.addDeviceButton.alpha = 1.0
            self?.addDeviceButton.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
        }, completion: nil)
    } else if lastContentOffset < scrollView.contentOffset.y {
        UIView.animate(withDuration: 0.25, animations: { [weak self] in
            self?.addDeviceButton.alpha = 0
            self?.addDeviceButton.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
        }, completion: nil)
    }
}
我是这样解决的:

private var lastContentOffset: CGFloat = 0

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
   lastContentOffset = scrollView.contentOffset.y
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if lastContentOffset > scrollView.contentOffset.y {
        UIView.animate(withDuration: 0.25, animations: { [weak self] in
            self?.addDeviceButton.alpha = 1.0
            self?.addDeviceButton.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
        }, completion: nil)
    } else if lastContentOffset < scrollView.contentOffset.y {
        UIView.animate(withDuration: 0.25, animations: { [weak self] in
            self?.addDeviceButton.alpha = 0
            self?.addDeviceButton.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
        }, completion: nil)
    }
}

显示到目前为止您做了什么?还要确认,您的视图是简单的UIView、tableView还是collectionView?我打赌会记住didScroll方法中scrollView的最后一个内容偏移量。然后,如果你看到scrollView向上移动,你应该将你的自定义“视图”移动到某个点,就像我和alpha一起看到的那样。当你们注意到它下降的时候,做一些限制在某个点上的操作。@cole我没有做任何事情,因为我甚至不知道从哪里开始。你们不必给我一个密码答案。我能弄明白。“我需要它,我将如何去做它呢?”科尔甚至我的谷歌搜索都很困难。我是否搜索隐藏标题?我甚至不知道这叫什么。我正在使用UICollectionView。但我也将对UITableView进行解释。我认为它们都是UIScrollView子类。显示您到目前为止做了什么?还要确认,您的视图是简单的UIView、tableView还是collectionView?我打赌会记住didScroll方法中scrollView的最后一个内容偏移量。然后,如果你看到scrollView向上移动,你应该将你的自定义“视图”移动到某个点,就像我和alpha一起看到的那样。当你们注意到它下降的时候,做一些限制在某个点上的操作。@cole我没有做任何事情,因为我甚至不知道从哪里开始。你们不必给我一个密码答案。我能弄明白。“我需要它,我将如何去做它呢?”科尔甚至我的谷歌搜索都很困难。我是否搜索隐藏标题?我甚至不知道这叫什么。我正在使用UICollectionView。但我也将对UITableView进行解释。我认为它们都是UIScrollView子类。欢迎使用stackoverflow。请简要说明此代码的作用以及如何解决问题。欢迎使用stackoverflow。请简要说明此代码的作用以及如何解决问题。