2016-08-18 77 views
4

我在我的资产中有我想要用于标签栏的图标,每个标签有2个(一个代表未突出显示,即只是一个轮廓,一个代表突出显示,在)。这个想法是为当前未选中的选项卡使用概述的图标,并为当前选中的选项卡填充一个。我怎么能这样做呢?在标签栏中设置自定义图标以突出显示/不突出显示

回答

1

只是要一个类为您的TabBar,例如:

class MainTabBarController: UITabBarController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     for item in self.tabBar.items! as [UITabBarItem] { 

     // loop through all of your elements in TabBar 

     if let image = item.image { 

      item.selectedImage = your Selected Image 
      item.image = your base Image 

     } 
    } 


} 

您可以将所有的图像存储在包含UIImage的,像一个数组:

let TabImages = [UIImage]() 
let HighlightedImages = [UIImage]() 

然后设置他们在您的每个循环。

+0

太棒了!似乎迄今为止工作得很好。循环中“if let”的目的是什么? –

+0

检查是否有图像。它就像item.image!= nil一样(但在这种情况下,如果!= nil,图像变量保存item.image的值。在这种情况下,你不需要这样做,只有当你想要变换一个现有的TabBar图像 – derdida

1
var tabBarController = self.window!.rootViewController as UITabBarController 
let tabItems = tabBarController.tabBar.items as [UITabBarItem] 
tabItems[2].selectedImage = UIImage(named: "tabImage1_Selected") 
+1

嗨弗兰克;你的代码可能是正确的,但在某些情况下它会作出更好的回答;例如,你可以解释如何以及为什么这个提议的改变可以解决提问者的问题,可能包括链接相关的文档,这会使它对他们更有用,而且对寻求类似问题解决方案的其他网站读者也更有用。 –