导航栏隐藏时更改单元格高度

时间:2017-06-26 12:57:18

标签: ios swift uinavigationcontroller

我有一个UICollectionViewController,其中的单元格代表了屏幕的视图。我这样做是为了创建一个自定义标签栏,当选中标签栏上的单元格时,该标签栏会更改为不同的单元格。

我认为我需要在导航栏隐藏时更改单元格高度,但我不知道该怎么做或者这个设置是“不好的做法”。

以下是我的所有约束(-是底部的白色工具栏):

menuBar

我在这里设置每个项目的大小:

view.addSubview(menuBar)
view.addConstraintsWithFormat("H:|[v0]|", views: menuBar)
view.addConstraintsWithFormat("V:[v0(44)]", views: menuBar)
menuBar.bottomAnchor.constraint(equalTo: bottomLayoutGuide.bottomAnchor).isActive = true

collectionView?.contentInset = UIEdgeInsetsMake(0, 0, 44, 0)
collectionView?.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, 44, 0)

因为我的代码中的这一行

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: view.frame.width, height: view.frame.height - 44)
}

导航栏正确隐藏,但我留下了这个结果(蓝色是一个单元格):

之前

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

您有一个空格,因为您要求集合视图在内容底部与集合视图按钮之间有填充。以下是您的代码。

import {Link} from 'react-router-dom'

<Link
  className="btn btn-primary btn-lg"
  to={'/path'}>
  Learn More
</Link>

当您尝试将collectionView?.contentInset = UIEdgeInsetsMake(0, 0, 44, 0) collectionView?.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, 44, 0) 设置为true时,确保您的集合视图对其周围环境具有正确的约束非常重要,因为当隐藏导航栏时,您的集合视图实际上使用了导航栏空间。首先,请确保将视图控制器的hidesBarsOnSwipe设置为false。然后,确保集合视图的顶部和底部约束连接在集合视图和顶部和顶部之间。像这样的按钮布局指南

enter image description here

最后,删除内容insets代码,这两行代码的按钮填充为44。