如何在iOS 11中向集合视图大标题导航栏添加刷新控件?

时间:2017-07-06 07:26:32

标签: ios pull-to-refresh uirefreshcontrol ios11

根据Apple的说法,刷新控件应该是iOS 11中大标题导航栏的一部分。

当我在故事板中为UITableViewController启用了刷新控件时,刷新控件是导航栏的一部分(在拉动刷新时)。

refresh control with large titles

我无法在故事板中为所有其他视图(如UICollectionViewController)执行此操作。当我在代码中添加刷新控件作为子视图时,它不是导航栏的一部分:

refreshControl = UIRefreshControl()
collectionView?.addSubview(refreshControl)

虽然看起来像这样:

looks like this though

如何在我的自定义滚动视图(如UICollectionViewController)中添加刷新控件,以便在使用大标题时导航栏中显示刷新控件?

3 个答案:

答案 0 :(得分:48)

自iOS 10起,UITableViewUICollectionView具有refreshControl属性。

所以,而不是:

tableView.addSubview(refreshControl)

你这样做:

tableView.refreshControl = refreshControl

这适用于iOS 11中的新大标题。

答案 1 :(得分:0)

就我而言,我想在UIView下使用UITableView,所以UITableView不是视图控制器的view的第一个子视图。

要解决此问题,我更改了UITableView和其他UIView的顺序

来自

enter image description here

enter image description here

现在,我只是将视图的zPosition设置为低于UITableView的{​​{1}}的值,这应该使我的视图看起来像在“ zPosition下”

UITableView

答案 2 :(得分:-1)

编辑:文档已在某个时候更新,以下信息不再适用。

Apple在UIRefreshControl文档中指定。

  

请注意   由于刷新控件专门设计用于由表视图控制器管理的表视图,因此在不同的上下文中使用它可能会导致未定义的行为。

如果您的VC是UITableViewController,它将与系统应用程序完全相同。