使 UITableView 标题“更粘”,更难下拉

Posted

技术标签:

【中文标题】使 UITableView 标题“更粘”,更难下拉【英文标题】:Make UITableView Header "stickier", harder to pull down 【发布时间】:2016-07-21 08:27:30 【问题描述】:

我在我的 TableView 中添加了带有自定义视图的标题。它用作搜索栏,我设置 contentOffset 使其在开始时隐藏。

一切都按预期进行,但我想知道是否有任何方法可以使其更难下拉? (应该更粘)现在它只需常规滚动即可打开,这太容易了。

编辑:ScrollViewDidScroll 代码

if tableView.contentOffset.y < 80 && tableView.contentOffset.y > 40 
            subscriptionsTableView.contentOffset.y += 0.23

            print("Content offset")
            print(tableView.contentOffset.y)

【问题讨论】:

如果您希望人们能够帮助您,请展示一些图像/代码! 有什么可以发布代码的?我解释了一切,在标题中添加了自定义视图,它可以工作。我只需要一些代码或一个想法如何在出现 tableview 标题时拉下 uitableview 时产生更粘的效果。 @ZassX 你找到解决方案了吗?可以分享一下吗? @IgorKulman Uhh 那是很久以前的事了,我没有代码了。我想我使用 pull 来实现它以使用自定义视图刷新。 appcoda.com/custom-pull-to-refresh @ZassX 谢谢,几乎可以工作,只是高度不够,而且刷新控件的高度看起来不能改变 【参考方案1】:

我有一个类似的问题,最后很容易解决。我将表格视图顶部插图设置为标题的高度

tableView.contentInset.top = -1 * headerView.frame.size.height

这会使标题显示在“屏幕外”,用户现在无法滚动到它。我添加了一个代码,将顶部插图更改为 0,显示标题,当用户滚动到标题上方时

func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) 
    if scrollView.contentOffset.y < 0 
        UIView.animate(withDuration: 0.25, animations: 
            self.tableView.contentInset.top = 0
        )
     else if scrollView.contentOffset.y > headerView.frame.size.height 
        UIView.animate(withDuration: 0.25, animations: 
            self.searchBar.resignFirstResponder()
            self.tableView.contentInset.top = -1 * self.headerView.frame.size.height
        )
    

当用户滚动表格视图时,我还设置了顶部插图。

【讨论】:

【参考方案2】:

我的2分钱:观察table view的contentOffset属性(或者实现scrollViewDidScroll:方法),调整你想要粘贴的view的位置。

这里引用了一些使用相同原理的东西:

make UIView in UIScrollView stick to the top when scrolled up Is it possible to add fixed content to a UIScrollView? Make static UIView sticky when UIScrollView is scrolling

【讨论】:

我也是这么想的。已经写了一行代码(用它更新了我的问题)但没有得到我想要的效果。我认为它会使滚动更粘/更难,但实际上会粘在顶部,你必须更快地向下滑动才能显示它。感谢您提供的链接,顺便看看! 如果“stickier”意味着滚动速度变慢,您可能只需要按比例减少内容偏移量。我不确定我是否理解您想要实现的确切行为 我希望在视图出现时隐藏标题(已经通过内容偏移实现)。当用户拉下 tableview 时,应该出现标题。 (就像 UIRefreshControl 一样)。问题是它看起来太容易了 - 很容易将它拉下来,与滚动 tableview 的速度相同。我想让用户感觉它更难拉下来 - 我不知道,比如将滚动速度降低到一半或其他东西。给用户一种感觉,它是在某种弹簧或什么东西上。我希望我解释得足够清楚。 那个视图完全出现后,是不是应该贴在上面? 没有。如果用户向下滚动表格视图,它将隐藏。

以上是关于使 UITableView 标题“更粘”,更难下拉的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义 UIRefreshControl 以使下拉高度低于默认值

Xamarin.Android - 本机代码编译是不是使逆向工程更难?

使用按钮和 UITableView 快速下拉

UITableView 部分标题内的下拉 UIView

下拉时 UITableVIew 标头没有弹跳

下拉以使用静态单元格刷新 UITableView