我有一个带有自定义UICollectionViewLayout的UICollectionView (实际上,我使用的是this nice layout)。
我在viewDidLoad中设置了contentOffset = CGPointZero
。然而,在viewDidLoad之后,偏移量是-20,内容被下推,如下所示:
(它应该与线条齐平)。我正在接口构建器中加载集合视图布局。我的问题似乎与this one非常相似,但是那里的解决方案对我不起作用。
我尝试在布局实现中修改collectionViewContentSize
,以确保它始终大于collectionView的大小。虽然这意味着我可以向下滚动我的内容(它比collectionView的高度短)并隐藏额外的空间,但我也可以向上滚动来查看它。
似乎什么都不起作用!
发布于 2013-07-19 07:39:31
我能想出的唯一解决方案的行为几乎是不可接受的:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (self.collectionView.contentOffset.y < 0) {
self.collectionView.contentOffset = CGPointMake(self.collectionView.contentOffset.x, 0.0);
}
}
以及在collectionViewContentSize
中将内容的高度设置为fmax(self.collectionView.frame.size.height + 20, [self stackedSectionHeight])
这会删除节标题上方的空格,但会从顶部删除“回弹”。这是一个相当次优的解决方案,但也是可以接受的。
如果有人有更好的答案,我会接受,如果我找到了,我会更新这个答案。
发布于 2013-10-08 16:51:01
我找到了发生这种情况的原因。检查以下问题的接受答案:Status bar and navigation bar appear over my view's bounds in iOS 7
实际上,我们只需在viewDidLoad
的IB中设置UIViewController的edgesForExtendedLayout
或automaticallyAdjustsScrollViewInsets
属性(如果您使用故事板),就可以解决我们的问题。
别忘了检查这个属性是可用的,因为在iOS6或更早的版本中它会导致崩溃:
if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}
致以问候!
发布于 2018-01-31 07:31:58
我开始发现这个问题出现在iOS 11上,我在滚动视图中有一个滚动视图。我花了差不多一天的时间才弄明白。
尝试设置内容插入调整行为:
if #available(iOS 11.0, *) {
scrollView.contentInsetAdjustmentBehavior = .never
}
这修复了我的集合视图调整它的内容插入少量,因为集合视图框架将移动超过封闭滚动视图的安全区域。
https://stackoverflow.com/questions/17688207
复制相似问题