如何在UITabBarItem中将SF符号图像垂直居中?

时间:2019-10-01 12:51:20

标签: ios uikit uitabbar uitabbaritem sf-symbols

我将SF Symbols图像用作iOS应用程序中的选项卡图像,方法如下:

self.tabBarItem.image = UIImage(systemName: "ellipsis")  

这会导致所有图像都进行顶部对齐,但我想使它们垂直居中。

我该怎么办?

3 个答案:

答案 0 :(得分:5)

默认情况下,显然SF符号以系统字体大小呈现。因此,如果您将省略号的基线偏移量增加一半,则可以几乎完美地将其垂直居中对齐。

这几乎是完美的,因为省略号具有自己的高度,即使解决方案不多,该解决方案也无法解决这个问题。

self.tabBarItem.image = UIImage(systemName: "ellipsis")!.withBaselineOffset(fromBottom: UIFont.systemFontSize / 2)

答案 1 :(得分:1)

使您的按钮与“tabBarSystemItem:.more”相同,但可以删除标题并应用配置的最佳解决方案如下:

self.tabBarItem.image = UIImage(systemName: "ellipsis", withConfiguration: 
UIImage.SymbolConfiguration(weight: .black))!.imageWithoutBaseline()

答案 2 :(得分:0)

您必须在UITabBarItem上设置图像插图,才能将图标下移6或7像素(取决于图标大小)。

在代码中:

我通过创建UITabBarController的子类并将此代码添加到我的viewDidLoad方法的底部来完成此操作:

tabBar.items?.forEach({
  $0.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
})

(如果您在其中配置了每个标签栏项,也可以在ViewController类中进行此操作。)

在情节提要中:

您还可以通过使用情节提要来执行此操作,方法是在情节提要中选择TabBarItem并在信息面板中调整插图:

Adjusting image insets in Storyboard