我有一个自定义的UITabBar,并在AppDelegate中使用以下代码:
- (void)tabBarController:(MainUITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[self customizeTabBar];
}
- (void)customizeTabBar {
NSLog(@"*******customizeTabBar*******");
UIImage *tabBackground = [[UIImage imageNamed:@"unselectedtab"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
// Set background for all UITabBars
[[UITabBar appearance] setBackgroundImage:tabBackground];
// Set tint color for the images for all tabbars
[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];
// Set selectionIndicatorImage for all tabbars
[[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"selectedtab"]];
}
- (void)tabBarController:(MainUITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed
{
NSLog(@"*******didEndCustomizingViewControllers*******");
}
在iOS5 +中这一切都很好,但是在7中,第一次加载第一个TabBarItem时,项目指示器为白色,并且似乎已选择了按钮,但未加载“selectedTab”图像。
当我按下另一个选项卡时,新选项卡为红色并正确显示-此后选择的第一个或任何选项卡栏项目也是如此-仅在首次启动时不起作用。
customTabBar会被调用,但是所选的图像不会在首次启动时出现。
didEndCustomizingViewControllers似乎根本没有被调用。
这不适用于iOS7上的仿真器或设备-但适用于iOS5、6。
有任何想法吗?
提前致谢。
最佳答案
除了通过外观进行设置外,再次直接为标签栏设置选择指示器图像对我来说很有效!
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
....
UITabBarController *tabBarContr = (UITabBarController *)self.window.rootViewController;
...
[[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"tab_bar_selection_indicator.png"]];
// iOS7 hack: to make selectionIndicatorImage appear on the selected tab on the first app run
[[tabBarContr tabBar] setSelectionIndicatorImage:[UIImage imageNamed:@"tab_bar_selection_indicator.png"]];
return YES;
}