如何在全局工具栏项目上设置Inset?

时间:2018-05-26 12:21:54

标签: ios swift uitabbarcontroller

我已经从AppDelegate尝试了这个,但是tabBarController在那个时候是nil并且它不起作用。

self.window?.rootViewController?.tabBarController?.toolbarItems![0].imageInsets.top = 5.0
self.window?.rootViewController?.tabBarController?.toolbarItems![1].imageInsets.top = 5.0

我只能通过在第一个视图控制器中插入这段代码来为第一个tabbar项执行此操作:

override func viewDidLoad() {
    super.viewDidLoad()
    self.tabBarItem.imageInsets.top = 5.0
}

但是我无法将其应用于第二个视图控制器,因为在用户首先点击标签栏项目之前它没有加载。

2 个答案:

答案 0 :(得分:0)

问题是这太晚了:

override func viewDidLoad() {
    super.viewDidLoad()
    self.tabBarItem.imageInsets.top = 5.0
}

准备视图控制器标签栏项目的位置在其初始化程序中。您需要覆盖init(coder:)(假设此视图控制器实例来自故事板):

required init?(coder aDecoder: NSCoder) {
    super.init(coder:aDecoder)
    self.tabBarItem.imageInsets.top = 5.0
}

答案 1 :(得分:0)

所以你可以创建自己的UITabBarController类:

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        if let tabBarItems = self.tabBar.items {
            for item in tabBarItems {
                item.imageInsets.top = 5
            }
        }
    }
}

然后在storyboard中将此类设置为UITabBarController的自定义