调整导航控制器下的菜单栏

时间:2018-07-31 23:46:27

标签: ios swift

enter image description here

当我尝试在不同的设备上运行时,Iphone 8上的menuBar似乎比Iphone X低,我将如何以编程方式为每个屏幕调整它们? 这是我对menuBar的代码

customCollectionView = MenuBar(frame: CGRect(x: 0, y:(navigationController?.navigationBar.frame.height)!, width: view.frame.width, height: 50))
    customCollectionView.translatesAutoresizingMaskIntoConstraints = true
    customCollectionView.collectionView.isScrollEnabled = false
    customCollectionView.collectionView.delegate = self
    view.addSubview(customCollectionView)
    menubarViewConstraints()

menubar约束的功能

func menubarViewConstraints(){
    customCollectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    customCollectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    customCollectionView.topAnchor.constraint(equalTo: (navigationController?.navigationBar.bottomAnchor)!).isActive = true
}

将表格纵向模式切换为横向模式:

enter image description here

1 个答案:

答案 0 :(得分:1)

这里的问题是iPhone X(任何潜在的将来的iOS设备)上的安全区域。

如果将初始框架调用的y位置更改为以下位置,则它应该起作用。

y:((navigationController?.navigationBar.frame.height)!) + (navigationController?.navigationBar.frame.origin.y) + 30

基本上,这将占用导航栏的高度,并添加Y原点位置,最后再添加30。

使用设备安全区域可能有更好的方法来实现此目的,但这是我首先想到的似乎可以使用的方法。