首页 > 解决方案 > 如何为具有较大高度且没有项目标题的 UITabBar 正确地垂直居中 UITabBar 项目?

问题描述

我正在开发一个具有更大高度、自定义阴影且没有项目标题的自定义 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 等)上,它看起来不错,图标正确居中,如下所示:

在此处输入图像描述

但是在具有主页按钮的 iPhone 上,标签栏项目没有正确垂直居中。有针对这个的解决方法吗?

在此处输入图像描述

标签: swiftxcodeuikit

解决方案


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

guard let items = tabBar.items else { return }
                
                for item in items {
                    item.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
                }

它调整 TabBarItem 的图像:)

使用此设置,它们将在每个 TabBarItem 中居中。


推荐阅读