2016-09-19 1 views
1

После обновления моего Xcode до Xcode 8 я столкнулся с этой странной проблемой. У меня есть панель вкладок и 3 вкладка в нем, когда tab1 выбрана панель вкладок и навигация выглядят следующим образом:tabBar и панель навигации стали темными после обновления до Xcode 8

цвет фон панель вкладок является белым, но его показом темного цвета вместо

enter image description here

и когда Я выбираю любую другую вкладку проблемы получает исправить

на скрине я выбрал tab2

enter image description here

Я не знаю, почему это происходит, но в ViewController tab1 у меня есть tableView и в tab2 у меня есть ViewController

Кто-нибудь знает, почему это происходит ???

отладки иерархии:

когда TAB1 выбран enter image description here


, когда любой другой выбрана вкладка enter image description here

я не знаю почему, но цвет фона TabBar в UIVisualEffectBackdropView является черным по tab1 и его прозрачный в другие вкладки

+0

Похоже, у вас есть другой вид или маска поверх него. Не только фон отличается от других, цвет изображения вкладки также отличается. Или проверьте некоторые альфа-файлы. Если вы установили некоторую альфу, предыдущий SDK для iOS раньше не мог этого понять. – pedrouan

+0

См. Ответ ниже. Надеюсь, это уже исправлено для вас. –

ответ

1

Получите добавленную тень на моем инструменте, вызвав проблему:

Код ниже дал мне правильную тень в Xcode7 (swift 2), но после обновления до Xcode 8 (swift 3) он изменил цвет других моих баров (панель вкладок + панель навигации):

toolbar.layer.masksToBounds = false 
toolbar.layer.shadowOffset = CGSize(width: -1, height: 1) 
toolbar.layer.shadowRadius = 1 
toolbar.layer.shadowOpacity = 0.5 
2

Вы можете решить эту проблему локально (например, если у вас есть CustomTabBarController) и глобально. Я обеспечиваю оба решения здесь, только для вас:

1. Локально:

class YourCustomTabBarVC: UITabBarController { 

    //MARK:- Initializers 
    required init?(coder aDecoder:NSCoder) { 
     super.init(coder: aDecoder) 
     __customInit() 
    } 

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { 
     super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 
     __customInit() 
    } 

    fileprivate func __customInit() { 
     addObservers() 

     //Customize TabBar appearance: 
     tabBar.backgroundColor = UIColor.white 
    } 
    } 

2. Во всем мире: в вашем AppDelegate.swift:

func application(_ application: UIApplication, 
       didFinishLaunchingWithOptions 
    launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    /* Your other code*/ 
    UITabBar.appearance().backgroundColor = UIColor.white // {UR_DESIRED_COLOR} 

} 

Я хотел бы предложить вы должны использовать глобальный метод. Добавьте, что одна строка, и вуаля! Вы будете взбираться, чтобы написать личное сообщение спасибо прямо здесь!

4

Для тех, кто еще страдает этой проблемой, по разным причинам в ОП:

Это точная проблема возникла у меня, когда я добавил строку edgesForExtendedLayout = [] в loadView() метод моего UIViewController к stop my view going under the navigation bar. Таким образом, удалив эту линию и вместо этого получив ту же цель, используя navigationController?.navigationBar.isTranslucent = false, она была исправлена ​​для меня (хотя решение Джона Доу могло быть жизнеспособным). Я предполагаю, что, когда под вашей панелью нет представления, UIVisualEffectBackdropView становится непрозрачным, и это просто черное.Похоже, что ваша панель инструментов темная.

+1

решил мой проблм. Спасибо дружище – cnu

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