我将刷新控件添加到了集合视图。一切正常,但是当我设置collectionView.contentInset = UIEdgeInsetsMake(0,20,20,20)时,刷新控件的宽度保持不变,但偏移了20px,因此不在视图中居中。控件应减少40像素才能正确。
self.collectionView = [[UICollectionView alloc] initWithFrame:rect collectionViewLayout:flowLayout];
self.collectionView.contentInset = UIEdgeInsetsMake(0, 20, 20, 20)
UIRefreshControl* pullDownRefresh = [[UIRefreshControl alloc] init];
[pullDownRefresh addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[self.collectionView addSubview:pullDownRefresh];
在添加视图(也在viewWillLayoutSubviews中)并使用autoresizingMask无效后,我尝试手动设置宽度。
有什么想法吗?我想我将不得不将其放入容器视图中……但不必这样做!
答案 0 :(得分:3)
好的,通过不设置collectionView.contentInset来解决此问题。相反,我在flowLayout上设置
即
flowLayout.sectionInset = UIEdgeInsetsMake(0, 20, 20, 20);
答案 1 :(得分:0)
接受的答案不符合我的需求,因为我有一个复杂的 collectionView,其中包含多种类型的单元格,并且每个单元格都有特定的部分插图,所以我不想深入研究并增加此解决方案的复杂性。
>对我有用的方法很简单。将 UIRefreshControl
添加到 collectionView
的 backgroundView:
collectionView.backgroundView = viewModel.refreshControl
完成刷新后,只需执行以下操作:
DispatchQueue.main.async {
self.viewModel.refreshControl?.endRefreshing()
}