uitabbaritemにカスタム選択された画像を使用する方法はありますか?
-
27-09-2019 - |
解決
私の解決策を見つけました。基本的に、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でも動作するはずです。
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"]];
}
}