collection如何在iOS11查看大标题导航栏添加刷新控件?

How to add refresh control to collection view large titles navigation bar in iOS 11?

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

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

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

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

虽然看起来像这样:

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

编辑:文档已更新,以下信息不再正确。

如 Apple 在 UIRefreshControl 文档中所指定。

Note Because the refresh control is specifically designed for use in a table view that's managed by a table view controller, using it in a different context can result in undefined behavior.

如果您的 VC 是 UITableViewController,它将像在系统应用程序中一样工作。

截至 iOS 10,UITableViewUICollectionViewrefreshControl 属性。

所以,而不是:

tableView.addSubview(refreshControl)

你这样做:

tableView.refreshControl = refreshControl

这应该适用于 iOS 11 中的新大 headers。

在我的例子中,我希望 UIViewUITableView 下,所以 UITableView 不是视图控制器 view 的第一个子视图。

为了解决这个问题,我更改了 UITableView 和其他 UIView

的顺序

来自

现在我只是将视图的 zPosition 设置为低于 UITableViewzPosition 的值,这应该使我的视图看起来像在 UITableView

myView.layer.zPosition = -1