ios 是否可以在CollectionView的Header中放置Refresh Controller?

c3frrgcw  于 2023-03-24  发布在  iOS
关注(0)|答案(1)|浏览(110)

我有一个CollectionView和一个Header,我想添加一个RefreshControllerCollectionView,我已经做了。它显示上面Header,因为我希望它是。但是,我希望RefreshController显示Header
原因是,Toolbar覆盖了Header。当我下拉刷新时,Header以我希望的RefreshController可见的方式可见。但我必须下拉Header的高度以使RefreshController可见,这是
a)距离太大而无法滚动,以及
B)RefreshControllerCollectionView之间的空间太大
下面是一些代码:

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,我能够得到想要的结果。

lokaqttq

lokaqttq1#

正如我的Larry Pickles在评论中所建议的那样,我所寻找的可以通过将collectionViewcontentInset的顶部设置为50来完成。

相关问题