UIRefreshControl 未以 contentInset 集为中心
UIRefreshControl not centred with contentInset set
我在集合视图中添加了一个刷新控件。一切正常,但是当我设置 collectionView.contentInset = UIEdgeInsetsMake(0, 20, 20, 20) 时,刷新控件的宽度保持不变但移动了 20 像素,因此不在视图中居中。控件应该减少 40px 才能正确。
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 无济于事。
有什么想法吗?我想我需要求助于将它放在容器视图中......但不需要!
好的,通过不设置 collectionView.contentInset 解决了问题。相反,我设置了 flowLayout
即
flowLayout.sectionInset = UIEdgeInsetsMake(0, 20, 20, 20);
接受的答案不符合我的需要,因为我有一个复杂的 collectionView,其中包含多种类型的单元格,并且每个单元格都有特定的部分插图,所以我不想深入研究并增加此解决方案的复杂性。
对我有用的东西很简单。改为将 UIRefreshControl
添加到 collectionView
的 backgroundView:
collectionView.backgroundView = viewModel.refreshControl
完成刷新后,只需执行以下操作:
DispatchQueue.main.async {
self.viewModel.refreshControl?.endRefreshing()
}
我在集合视图中添加了一个刷新控件。一切正常,但是当我设置 collectionView.contentInset = UIEdgeInsetsMake(0, 20, 20, 20) 时,刷新控件的宽度保持不变但移动了 20 像素,因此不在视图中居中。控件应该减少 40px 才能正确。
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 无济于事。
有什么想法吗?我想我需要求助于将它放在容器视图中......但不需要!
好的,通过不设置 collectionView.contentInset 解决了问题。相反,我设置了 flowLayout
即
flowLayout.sectionInset = UIEdgeInsetsMake(0, 20, 20, 20);
接受的答案不符合我的需要,因为我有一个复杂的 collectionView,其中包含多种类型的单元格,并且每个单元格都有特定的部分插图,所以我不想深入研究并增加此解决方案的复杂性。
对我有用的东西很简单。改为将 UIRefreshControl
添加到 collectionView
的 backgroundView:
collectionView.backgroundView = viewModel.refreshControl
完成刷新后,只需执行以下操作:
DispatchQueue.main.async {
self.viewModel.refreshControl?.endRefreshing()
}