当我尝试在不同的设备上运行时,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
}
将表格纵向模式切换为横向模式:
答案 0 :(得分:1)
这里的问题是iPhone X(任何潜在的将来的iOS设备)上的安全区域。
如果将初始框架调用的y位置更改为以下位置,则它应该起作用。
y:((navigationController?.navigationBar.frame.height)!) + (navigationController?.navigationBar.frame.origin.y) + 30
基本上,这将占用导航栏的高度,并添加Y原点位置,最后再添加30。
使用设备安全区域可能有更好的方法来实现此目的,但这是我首先想到的似乎可以使用的方法。