uitabbaritemにカスタム選択さ​​れた画像を使用する方法はありますか?

StackOverflow https://stackoverflow.com/questions/3461867

  •  27-09-2019
  •  | 
  •  

質問

ユーザーがタブバーでアイテムを選択したときにカスタム選択した画像があるのが好きです。デフォルトでは、青のように選択しますが、代わりに緑色になりたいです。以下のようなものはありますか?

alt text

役に立ちましたか?

解決

私の解決策を見つけました。基本的に、uitabitemをサブクラス化し、ナビゲーションコントローラーに設定しました。

-(void) viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    CustomTabBarItem *tabItem = [[CustomTabBarItem alloc] initWithTitle:@"Events" image:[UIImage imageNamed:@"tabIcon.png"] tag:0];
    tabItem.customHighlightedImage=[UIImage imageNamed:@"tabIconSelected.png"];
    self.tabBarItem = tabItem;
    [tabItem release];
    tabItem=nil;            
}

CustomTabbaritemクラスのように見えるものは次のとおりです。

@interface CustomTabBarItem : UITabBarItem
{
    UIImage  *customHighlightedImage;
}

@property (nonatomic, retain) UIImage *customHighlightedImage;

@end

実装:

#import "CustomTabBarItem.h

@implementation CustomTabBarItem

@synthesize customHighlightedImage;

- (void)dealloc {
    [customHighlightedImage release];
    customHighlightedImage=nil;
    [super dealloc];
}

-(UIImage *)selectedImage {
    return self.customHighlightedImage;
}

@end

他のヒント

iOS 6では、選択したtabbatitemイメージを変更しました -

Tabbar Controller Delegate Methodで

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

{
    if([tabBarController selectedIndex] == 0)
    {
        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
    }    
}

これにより、画像を変更できます。

または、View Controllers init(またはviewwillapear)メソッドで直接使用することもできます。

        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];

これがあなたに役立つことを願っています。

いくつかのカスタムビューを追加するだけです(insertsubview:atindex :) uitabbarcontroller-delegate-methodsが呼び出されたとき。

例:

– (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    [tabBarController.tabBar insertSubview:someView atIndex:someIndex];
}

あなたは変更を試してみることができます someIndex あなたが望む結果が得られるまであなた自身。

これはSDKで公式にサポートされていません。実行時にタブのビューを調べて調整できる場合がありますが、Appleからの拒否の危険があります。

編集:完全性のために、あなたの他のオプションはあなた自身のuitabbarを転がすことであることに言及する必要があります。

iOS5以降の場合、これを行うことができます。

rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];

私はあなたが今これを行うことができると信じています:

[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];

ストーリーボードを使用する場合、TabbarControllerのTabbarを選択してから、IDINTEPECTORの画像色を変更するだけです。これはXibsでも動作するはずです。

Todosを説明する画像をご覧ください

appdelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions {

[[UITabBar appearance] setSelectedImageTintColor:[UIColor redColor]]; 

return YES;

}

これにより、赤い色が表示され、Whitecolor、Bluecolorなどの色で色を変更します。

私のuitabbarcontroller'sで viewDidLoad:, 、Rizzuの答えに基づいて:

for (int i = 0; i < [self.viewControllers count]; i++)
{
    UIViewController* viewController = [self.viewControllers objectAtIndex:i];

    if(i == 0)
    {
        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_list_all_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_list_all.png"]];
    }
    else if(i == 1)
    {
        [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_settings_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_settings.png"]];
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top