如何为 iPhone 8 屏幕与 iPhone X 及以上屏幕设置不同的底部锚点常量?

How to have different constants for bottom anchor for iPhone 8 screen vs iPhone X and above?

我已经做了一些研究,但我仍然无法找到这个问题的答案:我想保持从屏幕底部到菜单底部的常数 -6 以进行预 iPhone X 屏幕类型。当 运行 在 X 或以上时,常量为 0,因为不需要。我已尝试验证 iOS 版本,但显然它始终默认为模型 8 上的 safeAreaLayoutGuide。我该怎么办?我只想到更多 "manual" 解决方案,例如屏幕高度,但我知道这不是可行的方法。请帮助。下面的代码。

view.addSubview(programMainMenu)
        if #available(iOS 11.0, *) { // gets called on 8.
            let safeGuide = self.view.safeAreaLayoutGuide
            let safeMenuConstraints = [
                programMainMenu.bottomAnchor.constraint(equalTo: safeGuide.bottomAnchor, constant: 0),
                programMainMenu.leadingAnchor.constraint(equalTo: safeGuide.leadingAnchor, constant: 8),
                programMainMenu.trailingAnchor.constraint(equalTo: safeGuide.trailingAnchor, constant: -8),
                programMainMenu.heightAnchor.constraint(equalToConstant: 90)
            ]
            NSLayoutConstraint.activate(safeMenuConstraints)
        } else {
            let mainMenuConstraints = [
                programMainMenu.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -6), // i need to have this on 8 but not above
                programMainMenu.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 8),
                programMainMenu.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -8),
                programMainMenu.heightAnchor.constraint(equalToConstant: 90)
            ]
            NSLayoutConstraint.activate(mainMenuConstraints)
        }*

你需要

 var cons = 0 // set values for it inside each switch case 

if UIDevice().userInterfaceIdiom == .phone {
    switch UIScreen.main.nativeBounds.height {
        case 1136:
            print("iPhone 5 or 5S or 5C")
           cons = ///

        case 1334:
            print("iPhone 6/6S/7/8")

        case 1920, 2208:
            print("iPhone 6+/6S+/7+/8+")

        case 2436:
            print("iPhone X/XS/11 Pro")

        case 2688:
            print("iPhone XS Max/11 Pro Max")

        case 1792:
            print("iPhone XR/ 11 ")

        default:
            print("Unknown")
        }
    }

然后在这里使用var

programMainMenu.bottomAnchor.constraint(equalTo: safeGuide.bottomAnchor,
constant:cons),