swift - 如何为具有较大高度且没有项目标题的 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 上,标签栏项目没有正确垂直居中。有针对这个的解决方法吗?
解决方案
现在它们没有像我在两个设备上看到的那样居中。您可以使用以下代码:
guard let items = tabBar.items else { return }
for item in items {
item.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}
它调整 TabBarItem 的图像:)
使用此设置,它们将在每个 TabBarItem 中居中。