當用戶在標籤欄上選擇一個項目時,我喜歡有一個自定義選擇的圖像,默認情況下,它選擇爲藍色,但想要改爲綠色。像下面的任何想法?有沒有辦法爲UITabBarItem使用自定義選定的圖像?
alt text http://www.freeimagehosting.net/uploads/11a2137011.png
當用戶在標籤欄上選擇一個項目時,我喜歡有一個自定義選擇的圖像,默認情況下,它選擇爲藍色,但想要改爲綠色。像下面的任何想法?有沒有辦法爲UITabBarItem使用自定義選定的圖像?
alt text http://www.freeimagehosting.net/uploads/11a2137011.png
剛剛找到我的解決方案。基本上,我子類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
這不是正式的SDK支持。您可能能夠在運行時探測並調整標籤的視圖,但是您可能會拒絕Apple。
編輯:爲了完整起見,我應該提到您的其他選擇是推出自己的UITabBar。
當調用UITabBarController-delegate-methods時,只需添加一些自定義視圖(使用insertSubview:atIndex :)即可。
例子:
– (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[tabBarController.tabBar insertSubview:someView atIndex:someIndex];
}
你可以試着改變自己someIndex
,直到你有你想要的結果。
這是好事,因爲它很容易實現,它不使用任何私有方法,因此不會對應用程序沒有問題評論。 –
對於iOS5的向上,你可以這樣做:
rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];
設置所有圖像的色調顏色。我只想要一個tabbar。我會怎麼做? –
在AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions {
[[UITabBar appearance] setSelectedImageTintColor:[UIColor redColor]];
return YES;
}
這會給你一個紅色,改變你想whiteColor,blueColor等一個顏色。
在iOS 6中我有改變等所選擇的圖像tabbatitem -
在的TabBar控制器委託方法
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if([tabBarController selectedIndex] == 0)
{
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
}
}
通過這個,您可以改變您的圖像。
或者你可以在你的視圖控制器的init(或viewWillAppear中)的方法直接使用,如
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
我希望這會幫助你的。
這個效果很好,除非所選圖像在選擇標籤前沒有設置(對於我來說第一個標籤最初仍然是藍色)。然而,在我的UITabBarController中通過viewDidLoad中的self.viewControllers迭代了這個技巧。 – Dustin
我也面臨與達斯汀相同的問題。請讓我知道我們如何顯示選擇或未選擇的圖像,而無需手動選擇選項卡。 –
我不知道,但你可以嘗試這一行代碼。 : - [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]]; –
使用故事板時,您可以簡單地選擇TabBarController的TabBar,然後更改Identity Inspector中的圖像色調。這應該也適用於XIB。
在我的UITabBarController的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"]];
}
}
嗨達斯汀。在我手動選擇所需的UITabBarItem之前,UITabBarItem上的圖像未設置。如果你解決了這個問題,那就給我一些提示。如果可能的話,請給我提供代碼。 –
什麼是customHighlightedImage?你在CustomTabBarItem類中放了什麼? –
只是在CustomTabBarItem的外觀上添加了更多細節 – Frank
請問未選取圖片的方法是什麼? – Tiago