我遇到了这段代码的问题:
navigationController?.hidesBarsOnSwipe = true
我的导航控制器的根视图控制器是一个UICollectionViewController。下面的蓝色视图是表示用户当前屏幕的单元格。我认为问题是我需要在导航栏隐藏时调整单元格大小。
我将单元格大小设置为:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: view.frame.width, height: view.frame.height - 44)
}
我没有打破任何限制,我非常确定一切都已正确设置。但是当我向上滑动时,会发生这种情况:
之前
后
如您所见,视图缩短了。我在代码中的任何地方都找不到那些测量值。
有没有办法确保视图正确调整大小?
答案 0 :(得分:0)
将它放在你的viewDidLoad()中,你应该好好去。
self.edgesForExtendedLayout = []
yourBlueView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(yourBlueView)
yourBlueView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
yourBlueView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
yourBlueView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
yourBlueView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
编辑: 将yourBlueView更改为您给出的特定UIView的名称。如果你遇到困难,请告诉我,但请先尝试解决。这是学习和保留它的最佳方式。
底部的栏至少需要44,我注意到它位于顶部的导航栏下方。删除过高的硬编码大小,并仅使用自动布局
第二次编辑:(这是一种非自动布局方式)
let reuseIdentifier = "Cell"
此代码进入viewDidLoad:
// Do any additional setup after loading the view, typically from a nib.
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10)
let displaySize = UIScreen.main.bounds
let displayHeight = displaySize.height - 40
let displayWidth = displaySize.width
layout.itemSize = CGSize(width: displayWidth, height: displayHeight)
if let collectionView = UICollectionView(frame: self.view.bounds, collectionViewLayout: layout) {
collectionView.dataSource = self
collectionView.delegate = self
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
collectionView.backgroundColor = UIColor.white
self.view.addSubview(collectionView!)
}