0

カスタムのタブ バー画像を使用しており、中央のタブもカスタム画像です (古いバージョンの 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"]];

これはうまく機能しますが、修正できない問題が 1 つあります。選択したタブの背景は、デフォルトで薄い灰色になっています。これは維持したい効果ですが、中央のタブには使用しません。中央のタブは大きな丸い画像で、選択すると変化しますが、灰色の背景が表示されます。

これを削除する方法はあり[tabBar setSelectionIndicatorImage:[[UIImage alloc] init]];ますが、そのタブのみです。または、アプリのデリゲートで、タブの変更を検出して削除しますか?

4

2 に答える 2

6

よし、ランチタイムの素敵な散歩は、これらの状況で本当に役立つことがわかりました. これは、同様の問題を抱えている他の人への私の答えです。

最初に<UITabBarControllerDelegate>アプリ デリゲートの .h に含めます。メソッドでdidFinishLaunchingWithOptionsは、タブ バーのデリゲートを設定します。

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
tabBarController.delegate = self;

次に、このメソッドを使用して、背景画像を表示するかどうかを切り替えることができます。

- (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];
    }
}
于 2013-01-30T14:58:29.507 に答える
0

これを自分のコードに実装してみました。ただし、ストーリーボードで元のタブバーを作成したので、アプリデリゲートにタブバーを追加しても上書きされないようです。どうやって回るのかしら?

このようにタブバーの項目を上書きできます

//create new tab bar appearance
UITabBar *tabBar = [UITabBar appearance];
//set background image
[tabBar setBackgroundImage:[UIImage imageNamed:@"menu.png"]];
//create a colour and apply it as tint colour when items aren't selected.
UIColor *color=[UIColor colorWithRed:64.0/255.0 green:147.0/255.0 blue:52.0/255.0 alpha:255.0];
UIColor *colorSelected=[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
[tabBar setTintColor:color];
[tabBar setSelectedImageTintColor:colorSelected];

[tabBar setSelectionIndicatorImage:[UIImage imageNamed:@"selection-tab.png"]];

そのすべては、オプション付きのdidfinishloadingにあります

于 2013-02-26T16:51:05.697 に答える