我有一个CollectionView
和一个Header
,我想添加一个RefreshController
到CollectionView
,我已经做了。它显示上面的Header
,因为我希望它是。但是,我希望RefreshController
显示在的Header
。
原因是,Toolbar
覆盖了Header
。当我下拉刷新时,Header
以我希望的RefreshController
可见的方式可见。但我必须下拉Header
的高度以使RefreshController
可见,这是
a)距离太大而无法滚动,以及
B)RefreshController
和CollectionView
之间的空间太大
下面是一些代码:
var refreshControl = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
[...]
refreshControl.tintColor = .gray
refreshControl.backgroundColor = .white
refreshControl.addTarget(self, action: #selector(refreshContents), for: .valueChanged)
eventCollectionView.refreshControl = refreshControl
eventCollectionView.register(EventHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: toolbarId)
}
@objc func refreshContents() {
self.perform(#selector(finishedRefreshing), with: nil, afterDelay: 1.5)
}
@objc func finishedRefreshing() {
refreshControl.endRefreshing()
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
return .init(width: screenWidth, height: 50)
}
编辑:在问这个问题的时候,我并不知道contentInset
。通过使用Larry Pickles建议的contentInset
,我能够得到想要的结果。
1条答案
按热度按时间lokaqttq1#
正如我的Larry Pickles在评论中所建议的那样,我所寻找的可以通过将
collectionView
的contentInset
的顶部设置为50来完成。