Swift 对于高度较大且无项目标题的UITabBar,如何正确将UITabBar项目垂直居中?

Swift 对于高度较大且无项目标题的UITabBar,如何正确将UITabBar项目垂直居中?,swift,xcode,uikit,Swift,Xcode,Uikit,我正在开发一个自定义的UITabBar,它有更大的高度,自定义阴影,并且没有项目标题 我正在为自定义UITabBar类使用以下代码来实现以下目标: class CustomUITabBar: UITabBar { @IBInspectable private var height: CGFloat = .zero override func sizeThatFits(_ size: CGSize) -> CGSize { guard let window

我正在开发一个自定义的UITabBar,它有更大的高度,自定义阴影,并且没有项目标题

我正在为自定义UITabBar类使用以下代码来实现以下目标:

class CustomUITabBar: UITabBar {

    @IBInspectable private var height: CGFloat = .zero

    override func sizeThatFits(_ size: CGSize) -> CGSize {
        guard let window = UIApplication.shared.windows.first else {
            return super.sizeThatFits(size)
        }
        var sizeThatFits = super.sizeThatFits(size)
        if #available(iOS 11.0, *) {
            sizeThatFits.height = height + window.safeAreaInsets.bottom
        } else {
            sizeThatFits.height = height
        }
        return sizeThatFits
    }
}
结果如下:在带有凹口的iPhone(iPhone X、XS、11等)上,它看起来不错,图标正确居中,如下所示:

但在有home按钮的iPhone上,标签栏项目并没有垂直居中。有解决办法吗


现在,它们并不像我在两台设备上看到的那样居中。您可以使用以下代码:

guard let items = tabBar.items else { return }
                
                for item in items {
                    item.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
                }
它调整TabBarItem的图像:)


使用此设置,它们将在每个选项卡项中居中。

现在它们不会像我在两个设备上看到的那样居中。您可以使用以下代码:

guard let items = tabBar.items else { return }
                
                for item in items {
                    item.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
                }
它调整TabBarItem的图像:)


使用此设置,它们将在每个选项卡项中居中。

感谢您的努力,但该代码没有改变任何内容:(感谢您的努力,但该代码没有改变任何内容:(