首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UICollectionView contentOffset随自定义布局变化

UICollectionView contentOffset随自定义布局变化
EN

Stack Overflow用户
提问于 2013-07-17 06:42:57
回答 5查看 41.9K关注 0票数 25

我有一个带有自定义UICollectionViewLayout的UICollectionView (实际上,我使用的是this nice layout)。

我在viewDidLoad中设置了contentOffset = CGPointZero。然而,在viewDidLoad之后,偏移量是-20,内容被下推,如下所示:

(它应该与线条齐平)。我正在接口构建器中加载集合视图布局。我的问题似乎与this one非常相似,但是那里的解决方案对我不起作用。

我尝试在布局实现中修改collectionViewContentSize,以确保它始终大于collectionView的大小。虽然这意味着我可以向下滚动我的内容(它比collectionView的高度短)并隐藏额外的空间,但我也可以向上滚动来查看它。

似乎什么都不起作用!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-07-19 07:39:31

我能想出的唯一解决方案的行为几乎是不可接受的:

代码语言:javascript
复制
- (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])

这会删除节标题上方的空格,但会从顶部删除“回弹”。这是一个相当次优的解决方案,但也是可以接受的。

如果有人有更好的答案,我会接受,如果我找到了,我会更新这个答案。

票数 16
EN

Stack Overflow用户

发布于 2013-10-08 16:51:01

我找到了发生这种情况的原因。检查以下问题的接受答案:Status bar and navigation bar appear over my view's bounds in iOS 7

实际上,我们只需在viewDidLoad的IB中设置UIViewController的edgesForExtendedLayoutautomaticallyAdjustsScrollViewInsets属性(如果您使用故事板),就可以解决我们的问题。

别忘了检查这个属性是可用的,因为在iOS6或更早的版本中它会导致崩溃:

代码语言:javascript
复制
if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
    self.automaticallyAdjustsScrollViewInsets = NO;
}

致以问候!

票数 48
EN

Stack Overflow用户

发布于 2018-01-31 07:31:58

我开始发现这个问题出现在iOS 11上,我在滚动视图中有一个滚动视图。我花了差不多一天的时间才弄明白。

尝试设置内容插入调整行为:

代码语言:javascript
复制
if #available(iOS 11.0, *) {
    scrollView.contentInsetAdjustmentBehavior = .never
}

这修复了我的集合视图调整它的内容插入少量,因为集合视图框架将移动超过封闭滚动视图的安全区域。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17688207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档