繁体   English   中英

hidesbarsonswipe改变视图大小

[英]hidesbarsonswipe mutates view size

我在这段代码上遇到了麻烦:

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)
}

我没有遇到任何限制,并且我确信一切都已正确设置。 但是当我向上滑动时,会发生这种情况:

之前

在此处输入图片说明

在此处输入图片说明

如您所见,视图变短了。 我在代码的任何地方都找不到这些度量。

有没有一种方法可以确保正确调整视图的大小?

把它放在你的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!)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM