我创建了一个标签栏控制器,其中包含一个容器视图的示例视图控制器。容器嵌入了referencedStoryBoard。
参考故事板包含一个视图控制器,其中嵌入了collectionView控制器。
当我的app运行时,collectionView单元格的高度计算错误。集合视图单元格隐藏在顶部。
注意: 1)集合视图滚动方向是水平的。在垂直方面它的工作好处
2)当我没有使用tabBar时,collectionView单元格高度正在正确计算。
您可以在此链接中找到示例项目:https://drive.google.com/open?id=1GbKC_ZhqQAlcLnD24YgxQTZt2toVprwF
这个问题在iOS11中运行良好。
答案 0 :(得分:1)
问题(在我看来):
SampleCollectionViewController
创建时具有正常大小(可能是全屏大小)。此时,创建collectionView
并重新加载。 collectionViewCell
的大小是根据SampleCollectionViewController
的大小计算的。 SampleCollectionViewController
嵌入了另一个尺寸较小的控制器中。 SampleCollectionViewController
更改的大小,但collectionView
未重新加载且collectionViewCell
保持启动大小。collectionViewCell
的高度大于屏幕上SampleCollectionViewController
的大小。这就是隐藏单元格顶部的原因。 解决方案:在invalidateLayout方法中调用traitCollectionDidChange:。这意味着当更改SampleCollectionViewController
的大小时,计算单元格大小并更新正确大小的单元格。
SampleCollectionViewController.m
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
[super traitCollectionDidChange:previousTraitCollection];
[self.collectionView.collectionViewLayout invalidateLayout];
}
答案 1 :(得分:0)
在故事板中选择您的视图控制器。检查是否选择了调整滚动视图插入,然后取消选中它。多数民众赞成我如何解决我的问题。
答案 2 :(得分:0)