2015-01-28 2 views
1

Я пытаюсь настроить свой UITabBarController. У меня он встроен в мой UIViewController, я также создал класс для этого UITabBarController.setTitleTextAttributes не работает для UITabBarItem, когда он не выбран в swift

override func viewDidLoad() { 
    super.viewDidLoad() 

    //custom tab bar 
    self.tabBar.barTintColor = UIColor(red: 0.0/255.0, green: 102.0/255.0, blue: 153.0/255.0, alpha: 1) 
    self.tabBar.tintColor = UIColor(red: 171.0/255.0, green: 203.0/255.0, blue: 61.0/255.0, alpha: 1) 
    self.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:UIControlState.Normal) 
    self.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:UIControlState.Disabled) 

    for item in self.tabBar.items as [UITabBarItem] 
    { 
     item.image = item.selectedImage.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
    } 


    // Do any additional setup after loading the view. 
} 

setTitleTextAttributes не оказывает влияния на элемент панели вкладок. Может кто-нибудь, пожалуйста, помогите мне найти, где ошибка?

ответ

6

Вот код, который работает в этом случае поставить еще в UITabBarController:

override func viewDidLoad() { 
super.viewDidLoad() 

//custom tab bar 
self.tabBar.barTintColor = UIColor(red: 0.0/255.0, green: 102.0/255.0, blue: 153.0/255.0, alpha: 1) 
self.tabBar.tintColor = UIColor(red: 171.0/255.0, green: 203.0/255.0, blue: 61.0/255.0, alpha: 1) 

for item in self.tabBar.items as [UITabBarItem] 
{ 
    item.image = item.selectedImage.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 
item.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:UIControlState.Normal) 
    item.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.whiteColor()], forState:UIControlState.Disabled) 
    item.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor(red: 171.0/255.0, green: 203.0/255.0, blue: 61.0/255.0, alpha: 1)], forState:UIControlState.Selected) 
} 
} 
0

Элементы панели вкладок относятся к отдельным контроллерам дочерних элементов, поэтому вам необходимо изменить атрибуты в этих контроллерах, а не на контроллере панели вкладок.

+0

Я попытался изменить атрибуты контроллеров в viewdidload, когда 1 ° точка зрения нагрузки, панель элемента вкладки из 2 ° по-прежнему сохраняется цвет по умолчанию для ios, который является серым, только если я нажму на 2 °, его вкладка будет установлена ​​с правильным цветом. Не могли бы вы объяснить более подробно, где мне нужно вводить коды? – Chongzl

+1

@Chongzl, вместо этого введите код в awakeFromNib. viewDidLoad не вызывается ни на каких контроллерах, кроме первого, пока вы не нажмете на их вкладку. – rdelmar

 Смежные вопросы

  • Нет связанных вопросов^_^