有没有使用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控制器委托方法
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if([tabBarController selectedIndex] == 0)
{
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
}
}
通过这个你可以改变你的形象。
或者,可以直接在视图控制器使用的初始化(或viewWillAppear中)的方法,像
[viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]];
我希望这会帮助你。
只需添加一些自定义视图(使用insertSubview:atIndex :)当的UITabBarController-委托的方法被称为
示例:
– (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
[tabBarController.tabBar insertSubview:someView atIndex:someIndex];
}
您可以尝试改变自己,直到someIndex
你有你想要的结果。
此不正式在SDK支持。您可以探测并在运行时调整选项卡中的观点,但你可能从苹果公司的拒绝。
编辑:为了完整起见,我要指出,你的另一种选择是推出自己的UITabBar
有关的iOS5及以上,你可以这样做:
rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor];
我相信你现在可以做到这一点:
[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil];
在使用故事板,你可以简单地选择你的TabBarController的TabBar,然后改变图像的色调的身份检查。这应该也与XIBs工作。
的图像在AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions {
[[UITabBar appearance] setSelectedImageTintColor:[UIColor redColor]];
return YES;
}
这会给你一个红色,改变颜色与要whiteColor,blueColor之一等。
在我的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"]];
}
}
不隶属于 StackOverflow