XCode:从特定选项卡中删除选择指示器图像

Pat*_*ick 0 iphone xcode objective-c uitabbarcontroller

我正在使用自定义标签栏图像,中间标签也是自定义图像(很像旧版本的Instagram).

这是我的一些代码:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    UITabBar *tabBar = tabBarController.tabBar;

    [tabBar setBackgroundImage:[UIImage imageNamed:@"CustomTabBar.png"]];

    UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2];
    tabBarItem3.title = nil;
    tabBarItem3.image = nil;
    [tabBarItem3 setFinishedSelectedImage:[UIImage imageNamed:@"tab-button-selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab-button.png"]];
Run Code Online (Sandbox Code Playgroud)

这很好用,但我有一个问题我无法解决.默认情况下,所选选项卡具有浅灰色背景.这是我想要保留的效果,但不适用于中间选项卡.中间选项卡是一个较大的圆形图像,在选中时会发生变化,但仍会出现灰色背景.

有没有办法删除这个,[tabBar setSelectionIndicatorImage:[[UIImage alloc] init]];但仅限于该选项卡.或者,在应用程序委托中,检测选项卡中的更改并将其删除?

Pat*_*ick 6

好的,所以事实证明一个不错的午餐时间步行真的有助于这些情况.以下是我遇到类似问题的人的答案.

我首先包含<UITabBarControllerDelegate>在我的应用代表的.h中.在didFinishLaunchingWithOptions方法中我设置了标签栏的代理:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
tabBarController.delegate = self;
Run Code Online (Sandbox Code Playgroud)

然后我可以使用此方法切换是否显示背景图像:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    UITabBar *tabBar = tabBarController.tabBar;
    if (tabBar.selectedItem == [tabBar.items objectAtIndex:2]) {
        [tabBar setSelectionIndicatorImage:[[UIImage alloc] init]];
    }
    else {
        [tabBar setSelectionIndicatorImage:nil];
    }
}
Run Code Online (Sandbox Code Playgroud)