在iOS7中使用UITabbarController的Split View Controller问题

时间:2013-11-12 17:32:43

标签: objective-c ipad uisplitviewcontroller

我在UITabbarController中使用UISplitViewController。现在的问题是,当我尝试将tabbar的半透明属性设置为NO时,它会在标签栏上方显示一个额外的栏,如下图所示。

enter image description here

我们非常感谢您对此问题的帮助。

由于

- (void)setupTabbar {
tabBarController = [[UITabBarController alloc] init];
tabBarController.delegate = self;

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
    tabBarController.tabBar.barTintColor = UIColorFromRGB(kTabbarTintColor);
    tabBarController.tabBar.tintColor = [UIColor whiteColor];
}

UINavigationController *homeNavController = [[UINavigationController alloc] initWithRootViewController:[root getViewController]];

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
    homeNavController.navigationBar.barTintColor = UIColorFromRGB(kNavigationTintColor);
    homeNavController.toolbar.barTintColor = UIColorFromRGB(kNavigationTintColor);
}
else {
    homeNavController.navigationBar.tintColor = UIColorFromRGB(kNavigationTintColor);
    homeNavController.toolbar.tintColor = UIColorFromRGB(kNavigationTintColor);
}


if (IS_IPAD_LAYOUT_ENABLED) {
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        _homeSplitViewController = [[UISplitViewController alloc] init];

        category *objCategory = [[category alloc] init];
        objCategory.category_id = kInstructionsCategoryId;

        articleview *instructionsView = (articleview *)[objCategory getViewController];
        UINavigationController *placeHolderNavController = [[UINavigationController alloc] initWithRootViewController:instructionsView];

        _homeSplitViewController.delegate = instructionsView;

        if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
            placeHolderNavController.navigationBar.barTintColor = UIColorFromRGB(kNavigationTintColor);
            placeHolderNavController.toolbar.barTintColor = UIColorFromRGB(kNavigationTintColor);
        }
        else {
            placeHolderNavController.navigationBar.tintColor = UIColorFromRGB(kNavigationTintColor);
            placeHolderNavController.toolbar.tintColor = UIColorFromRGB(kNavigationTintColor);
        }
        _homeSplitViewController.viewControllers = [NSArray arrayWithObjects:homeNavController, placeHolderNavController, nil];
        _homeSplitViewController.tabBarItem.title = @"Home";
        _homeSplitViewController.tabBarItem.image = [UIImage imageNamed:@"home_ico.png"];
    }
    else {
        homeNavController.tabBarItem.title = @"Home";
        homeNavController.tabBarItem.image = [UIImage imageNamed:@"home_ico.png"];
    }
}
else {
    homeNavController.tabBarItem.title = @"Home";
    homeNavController.tabBarItem.image = [UIImage imageNamed:@"home_ico.png"];
}


settingsviewcontroller *settingsViewController = [[settingsviewcontroller alloc] initWithNibName:@"settingsviewcontroller" bundle:nil];
UINavigationController *settingsNavController = [[UINavigationController alloc] initWithRootViewController:settingsViewController];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
    settingsNavController.navigationBar.barTintColor = UIColorFromRGB(kNavigationTintColor);
}
else {
    settingsNavController.navigationBar.tintColor = UIColorFromRGB(kNavigationTintColor);
}

settingsNavController.tabBarItem.title = @"More";
settingsNavController.tabBarItem.image = [UIImage imageNamed:@"more_ico.png"];

SearchViewController *searchViewController = [[SearchViewController alloc] initWithNibName:@"SearchViewController" bundle:nil];
UINavigationController *searchNavController = [[UINavigationController alloc] initWithRootViewController:searchViewController];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
    searchNavController.navigationBar.barTintColor = UIColorFromRGB(kNavigationTintColor);
    searchNavController.toolbar.barTintColor = UIColorFromRGB(kNavigationTintColor);
}
else {
    searchNavController.navigationBar.tintColor = UIColorFromRGB(kNavigationTintColor);
    searchNavController.toolbar.tintColor = UIColorFromRGB(kNavigationTintColor);
}
searchNavController.tabBarItem.title = @"Search";
searchNavController.tabBarItem.image = [UIImage imageNamed:@"search_ico.png"];


category *objCategory = [[category alloc] init];
objCategory.category_id = kMenuBar2CatId;
objCategory.screen_type = @"list";
objCategory.short_label = kMenuBar2Title;

UINavigationController *navController2 = [[UINavigationController alloc] initWithRootViewController:[objCategory getViewController]];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
    navController2.navigationBar.barTintColor = UIColorFromRGB(kNavigationTintColor);
    navController2.toolbar.barTintColor = UIColorFromRGB(kNavigationTintColor);
}
else {
    navController2.navigationBar.tintColor = UIColorFromRGB(kNavigationTintColor);
    navController2.toolbar.tintColor = UIColorFromRGB(kNavigationTintColor);
}
navController2.tabBarItem.title = kMenuBar2Title;
navController2.tabBarItem.image = [UIImage imageNamed:kMenuBarIcon2];


MyScheduleViewController *placeHolderVC = [[MyScheduleViewController alloc] initWithNibName:@"MyScheduleViewController" bundle:nil];
UINavigationController *navController3 = [[UINavigationController alloc] initWithRootViewController:placeHolderVC];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
    navController3.navigationBar.barTintColor = UIColorFromRGB(kNavigationTintColor);
    navController3.toolbar.barTintColor = UIColorFromRGB(kNavigationTintColor);
}
else {
    navController3.navigationBar.tintColor = UIColorFromRGB(kNavigationTintColor);
    navController3.toolbar.tintColor = UIColorFromRGB(kNavigationTintColor);
}
navController3.tabBarItem.title = kMenuBar3Title;
navController3.tabBarItem.image = [UIImage imageNamed:kMenuBarIcon3];

[objCategory release];

if (IS_IPAD_LAYOUT_ENABLED) {
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        tabBarController.viewControllers = [NSArray arrayWithObjects:_homeSplitViewController, searchNavController, navController2, navController3, settingsNavController, nil];
    }
    else {
        tabBarController.viewControllers = [NSArray arrayWithObjects:homeNavController, searchNavController, navController2, navController3, settingsNavController, nil];
    }
}
else {
    tabBarController.viewControllers = [NSArray arrayWithObjects:homeNavController, searchNavController, navController2, navController3, settingsNavController, nil];
}

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
    self.window.tintColor = [UIColor whiteColor];
}

tabBarController.tabBar.translucent = NO;

self.window.backgroundColor = [UIColor whiteColor];
self.window.rootViewController = tabBarController;

}

1 个答案:

答案 0 :(得分:2)

只需在主人viewDidLoad上添加此代码:

self.splitViewController?.extendedLayoutIncludesOpaqueBars = true