Swift 对于高度较大且无项目标题的UITabBar,如何正确将UITabBar项目垂直居中?
我正在开发一个自定义的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
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的图像:)
使用此设置,它们将在每个选项卡项中居中。感谢您的努力,但该代码没有改变任何内容:(感谢您的努力,但该代码没有改变任何内容:(