我已经从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
}
但是我无法将其应用于第二个视图控制器,因为在用户首先点击标签栏项目之前它没有加载。
答案 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的自定义