UITabBarItem setFinishedSelectedImage:在 iOS7 中已弃用

Posted

技术标签:

【中文标题】UITabBarItem setFinishedSelectedImage:在 iOS7 中已弃用【英文标题】:UITabBarItem setFinishedSelectedImage: deprecated in iOS7 【发布时间】:2013-10-24 10:19:27 【问题描述】:

setFinishedSelectedImage:withFinishedUnselectedImage:ios7 中已弃用。 Apple recommends 使用 imageselectedImage 的设置器和 UIImageRenderingModeAlwaysOriginal 代替。我找不到任何有关如何使用UIImageRenderingModeAlwaysOriginal 的示例。所以问题其实很简单:如何在iOS7中为UITabBarItem设置图片?

【问题讨论】:

观看 2013 年 WWDC 视频“Cocoa Touch 的新功能”。我认为该视频中已对此进行了解释。 【参考方案1】:

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

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

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

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

这两个是替代

setFinishedSelectedImage:  withFinishedUnselectedImage:

【讨论】:

+1 这很好用。这个解决方案比 IDE 推荐的 initWithTitle:image:selectedImage: 更值得关注。【参考方案2】:

setFinishedSelectedImage 已被弃用,因为 Apple 希望引导界面使用模板图像和您选择的 tintColor(或蓝色默认值)。因此,简单的默认值以这种方式处理选项卡栏项。

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

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

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

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

- (void)viewDidLoad

    [super viewDidLoad];

...

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


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

【讨论】:

【参考方案3】:
class TabBarController: UITabBarController 

    override func viewDidLoad() 
        super.viewDidLoad()

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


【讨论】:

请关注此URL,它将有助于您提高内容质量

以上是关于UITabBarItem setFinishedSelectedImage:在 iOS7 中已弃用的主要内容,如果未能解决你的问题,请参考以下文章

删除 UITabBarItem

如何为 UITabBarItem 设置自定义标题属性

UITabBaritem 中的动态 UIView

为 UITabBarItem 设置操作

UITabBarItem 内的图像位置

UITabBarItem 更改图像高度和宽度