首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在iOS 10中使用选项卡栏控制器时,集合视图的高度计算错误

在iOS 10中使用选项卡栏控制器时,集合视图的高度计算错误
EN

Stack Overflow用户
提问于 2018-04-05 00:22:09
回答 3查看 169关注 0票数 0

我已经创建了一个选项卡栏控制器,其中包含一个示例视图控制器和一个容器视图。容器嵌入了referencedStoryBoard。

参考情节提要包含一个视图控制器,其中嵌入了collectionView控制器。

当我的应用程序运行时,collectionView单元格高度计算错误。集合视图单元格将隐藏在顶部。

注:1)采集视图滚动方向为水平。在垂直方向上,它运行良好

2)当我不使用tabBar时,collectionView单元格高度计算正确。

您可以在以下链接中找到示例项目:https://drive.google.com/open?id=1GbKC_ZhqQAlcLnD24YgxQTZt2toVprwF

问题在iOS11中工作正常。

EN

回答 3

Stack Overflow用户

发布于 2018-04-05 01:03:08

问题(在我看来):

在启动SampleCollectionViewController时,

  • 是用正常大小(可能是全屏大小)创建的。此时,将创建并重新加载collectionView。根据SampleCollectionViewController的大小计算collectionViewCell的大小。
  • ,但在那之后,SampleCollectionViewController被嵌入到另一个更小的控制器中。SampleCollectionViewController的大小已更改,但collectionView未重新加载,collectionViewCell保持启动大小。
  • 现在collectionViewCell的高度大于屏幕上的SampleCollectionViewController的大小。这就是为什么单元格顶部被隐藏的原因。

解决方案:在traitCollectionDidChange:方法中调用invalidateLayout。这意味着当SampleCollectionViewController的大小改变时,计算单元格的大小并更新合适的大小。

SampleCollectionViewController.m

代码语言:javascript
运行
复制
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
  [super traitCollectionDidChange:previousTraitCollection];

  [self.collectionView.collectionViewLayout invalidateLayout];
}

Project works normally on my side.

票数 1
EN

Stack Overflow用户

发布于 2018-04-05 00:49:31

在故事板中选择视图控制器。检查是否选择了调整滚动视图插入,然后取消选择它。这就是我解决问题的方法。

票数 0
EN

Stack Overflow用户

发布于 2018-04-05 16:29:33

当我改变设计时,我能够在iOS 10上解决这个问题,在iOS 11上也能很好地工作。

我创建了一个segue来调用storyboard引用,而不是用于storyboard引用的容器视图。由于问题是特定于iOS 10和水平集合视图的,所以我将继续问题中提到的早期设计。

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

https://stackoverflow.com/questions/49655924

复制
相关文章

相似问题

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