【发布时间】: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,而在
标签: ios objective-c xcode cocoa-touch ios7