ios导航栏半透明设置为NO改变底部UICollectionView的高度

Posted

技术标签:

【中文标题】ios导航栏半透明设置为NO改变底部UICollectionView的高度【英文标题】:ios navigation bar translucency set to NO changes height of UICollectionView at bottom 【发布时间】:2014-04-01 00:05:35 【问题描述】:

我有一个非常简单的控制器。我有一个带有半透明设置为 NO 和一个子 UICollectionView 的导航栏的视图。问题是当我将半透明设置为 NO 时,我的 UICollectionView 的高度在底部被缩短(一直向下滚动)。当我将其设置为 YES 时,我没有任何问题,我的 UICollectionView 中的整行一直滚动到底部显示正常。

我尝试使用:

self.edgesForExtendedLayout = UIRectEdgeNone;

在 viewDidLoad、viewWillLayoutSubviews 甚至 viewDidLayoutSubviews 中,但我仍然看到同样的问题。

在底部被剪掉的高度似乎等于导航栏的高度,甚至可能等于状态栏的高度,但我不确定。

【问题讨论】:

【参考方案1】:

您是否尝试在集合视图中设置约束?我想知道您的集合视图的框架是什么……您可以尝试使用调试器将其打印出来并检查框架以查看其与底部的分离是否为 0。

【讨论】:

这是我发现的:我的主视图 h = 504pt,w = 320pt。我的 collectionview 的 h = 568pt,w = 320pt。似乎我的主要视图以某种方式缩短了。 还有一件事。我注意到在 loadView 中,我分配主视图 self.view = ....,h = 548pt 和 w = 320pt。有些东西正在改变我的主视图的高度。【参考方案2】:

我解决了这个问题。问题是我在分配主视图后在 loadView 中设置 UICollectionView 的框架。主视图的新边界仅在 loadView 之后计算。我在 viewDidLayoutSubviews 中移动了 UICollectionView 框架的设置,一切正常。

【讨论】:

以上是关于ios导航栏半透明设置为NO改变底部UICollectionView的高度的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViews 中设置导航栏半透明以启动动画

如何使iOS中的PhoneGap状态栏半透明?

iOS 设置导航栏透明后 push 界面 界面下移64高度

Swift 4仅为一个视图控制器设置导航属性

在 ios 7 中制作透明导航栏和透明标签栏。

WKWebView 底部视图显示不全