为啥这个 UITabBarItem 图像切换代码在 iOS 7 上有效,而在 iOS 7.1 上无效?
Posted
技术标签:
【中文标题】为啥这个 UITabBarItem 图像切换代码在 iOS 7 上有效,而在 iOS 7.1 上无效?【英文标题】:Why does this UITabBarItem image switching code work on iOS 7 but not iOS 7.1?为什么这个 UITabBarItem 图像切换代码在 iOS 7 上有效,而在 iOS 7.1 上无效? 【发布时间】:2014-03-11 14:19:58 【问题描述】:这是在我的 AppDelegate.m 文件中。这段代码在 ios 7 上完美运行。UITabBarItem
将被选中,选中的那一张的图像更改为“按下”图像,而其他图像会变回来。
现在代码在 iOS 7.1 中根本无法使用。奇怪的。有人知道为什么吗?
7.0(注意设置图片已正确更改为填充白色):
7.1(注意设置中没有白色填充):
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
if (IS_IOS7_AND_UP)
NSLog(@"%d", (int)tabBarController.selectedIndex);
UITabBarItem *tbi = (UITabBarItem *)(tabBarController.tabBar.items)[tabBarController.selectedIndex];
UITabBarItem *tb2 = (UITabBarItem *)(tabBarController.tabBar.items)[2];
UITabBarItem *tb3 = (UITabBarItem *)(tabBarController.tabBar.items)[3];
UITabBarItem *tb4;
if ([tabBarController.tabBar.items count] > 4)
tb4 = (UITabBarItem *)(tabBarController.tabBar.items)[4];
switch (tabBarController.selectedIndex)
case 0:
tb2.image = [UIImage imageNamed:@"settings-icon-ios7"];
tb3.image = [UIImage imageNamed:@"help-icon-ios7"];
break;
case 1:
tb2.image = [UIImage imageNamed:@"settings-icon-ios7"];
tb3.image = [UIImage imageNamed:@"help-icon-ios7"];
break;
case 2:
tbi.image = [UIImage imageNamed:@"settings-icon-ios7-pressed"];
tb3.image = [UIImage imageNamed:@"help-icon-ios7"];
break;
case 3:
tbi.image = [UIImage imageNamed:@"help-icon-ios7-pressed"];
tb2.image = [UIImage imageNamed:@"settings-icon-ios7"];
break;
case 4:
tb2.image = [UIImage imageNamed:@"settings-icon-ios7"];
tb3.image = [UIImage imageNamed:@"help-icon-ios7"];
break;
default:
break;
【问题讨论】:
你的 IS_IOS7_AND_UP 宏是如何定义的? 为什么不直接使用UITabBarItem的selectedImage属性呢? @bjtitus - 实际上不知道该属性...我会调查它。 @Flexicoder - 它进入 if 语句就好了。#define IS_IOS7_AND_UP ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0)
@bjtitus 是对的,原来iOS7.1如果要在代码中手动设置标签栏图标,需要单独设置tabBarItem.selectedImage,而在bjtitus 正确回答了我。我现在改用以下代码(在创建标签栏而不是在委托上),这解决了问题:
UITabBarItem *tb0 = (UITabBarItem *)(tabController.tabBar.items)[0]; //main
UITabBarItem *tb1 = (UITabBarItem *)(tabController.tabBar.items)[1]; //wishlist
UITabBarItem *tb2 = (UITabBarItem *)(tabController.tabBar.items)[2];
UITabBarItem *tb3 = (UITabBarItem *)(tabController.tabBar.items)[3];
UITabBarItem *tb4;
if ([tabController.tabBar.items count] > 4)
tb4 = (UITabBarItem *)(tabController.tabBar.items)[4];
if ([[[NSBundle mainBundle] objectForInfoDictionaryKey:@"MultiApp"] boolValue])
tb2.selectedImage = [UIImage imageNamed:@"settings-icon-ios7-pressed"];
tb3.selectedImage = [UIImage imageNamed:@"appswitch-tab-ios7-pressed"];
tb4.selectedImage = [UIImage imageNamed:@"help-icon-ios7-pressed"];
else
tb2.selectedImage = [UIImage imageNamed:@"settings-icon-ios7-pressed"];
tb3.selectedImage = [UIImage imageNamed:@"help-icon-ios7-pressed"];
【讨论】:
以上是关于为啥这个 UITabBarItem 图像切换代码在 iOS 7 上有效,而在 iOS 7.1 上无效?的主要内容,如果未能解决你的问题,请参考以下文章