Использование конструктора интерфейса xcode 5 для настройки цвета тона (фона) панели вкладок
Я совершенно новичок в разработке ios, и у меня есть следующий вопрос. При разработке tabBar в раскадровке в xcode 5 я понял, что не могу установить цвет фона tabBar для ios 6.
Похоже, это связано с тем, что в ios6 цвет фона панели был tintColor, а в ios 7 он был изменен на barTintColor.
Если я изменю параметр раскадровки "Просмотр как" на "iOS 6.1 и Ealier", я вижу, что цвет фона меняется с правильного значения, которое я установил в редакторе атрибутов (Bar Tint), на стандартное значение iOS 6.
Конечно, я могу установить значение из кода, но это было бы плохо для удобства обслуживания.
Есть ли способ, как можно определить это значение для iOS 6 в конструкторе интерфейса xcode 5?
ОБНОВЛЕНИЕ: Поскольку до сих пор я не нашел удовлетворительного решения этой проблемы, я использую следующий обходной путь. Я установил цвет фона tabBar в инспекторе атрибутов на атрибуты "Оттенок панели" и "Фон" в представлении. В моем приложении делегата я использую следующий код:
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UITabBar *tabBar = tabBarController.tabBar;
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 7) {
[tabBar setSelectedImageTintColor:tabBar.tintColor];
tabBar.tintColor = tabBar.backgroundColor;
}
1 ответ
Я столкнулся с той же проблемой. К сожалению, вам придется сохранить совместимость iOS 6 в коде, используя что-то похожее на это:
// iOS 6 compatibility
NSString *reqSysVer = @"7.0";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] == NSOrderedAscending) {
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:66.f/255.f green:173.f/255.f blue:179.f/255.f alpha:1.f]];
[[UIBarButtonItem appearance] setTintColor:[UIColor colorWithRed:66.f/255.f green:173.f/255.f blue:179.f/255.f alpha:1.f]];
}
Я не уверен, почему "оттенок" в InterfaceBuilder не работает, но это не с нашей стороны.
Примечание: если вы хотите поддерживать iOS < 5.0, вам придется изменить проверку версии iOS, поскольку протокол UIAppearance доступен только с iOS 5.0