18

setFinishedSelectedImage:withFinishedUnselectedImage:在 iOS7 中已弃用。Apple建议使用 setterimageselectedImage withUIImageRenderingModeAlwaysOriginal来代替。我找不到任何如何使用UIImageRenderingModeAlwaysOriginal. 所以问题很简单:如何UITabBarItem在 iOS7 中设置图像?

4

3 回答 3

57

如果您正在尝试在 UITabBar 上显示实际图像,请使用以下代码。

[yourTabBarItem setImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

如果您想以原始状态显示所选图像,请使用以下命令

[yourTabBarItem setSelectedImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

这两个是替代品

setFinishedSelectedImage:  withFinishedUnselectedImage:
于 2013-11-22T10:44:19.653 回答
6

setFinishedSelectedImage弃用,因为 Apple 希望将接口直接用于使用模板图像和您选择的 tintColor(或蓝色默认值)。因此,简单的默认值以这种方式处理选项卡栏项。

如果您仍需要按设计使用图标图像,请使用始终原始的渲染模式创建图像。像:

[[UIImage imageNamed:@"YourIcon.png"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal];

要设置图标,您需要tabBarItemViewController. 我在我的应用程序中错过的是我的每个选项卡都有一个NavigationController包装在选项卡中的顶视图控制器。关于这个主题的大多数答案都没有提到获得 navigationContoller,这是让它在我的应用程序中运行的关键。

因此,在我的 UITableViewContoller 子类中,我将以下内容添加到 viewDidLoad。

- (void)viewDidLoad
{
    [super viewDidLoad];

...

[self.navigationController.tabBarItem setSelectedImage:[[UIImage imageNamed:@"MySelectedIcon.png"]
 imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal]];

}

结果是选择选项卡时设计的图标。如果不调用 imageWithRenderingMode 方法,图标将被视为使用 tintColor 着色的模板。希望这可以帮助。

于 2013-11-15T18:10:47.283 回答
0
class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tabBar.backgroundImage = UIImage()
        self.tabBar.shadowImage = UIImage()
    }

}
于 2016-06-17T02:01:25.237 回答