UITabBarItem setFinishedSelectedImage:在 iOS7 中已弃用
Posted
技术标签:
【中文标题】UITabBarItem setFinishedSelectedImage:在 iOS7 中已弃用【英文标题】:UITabBarItem setFinishedSelectedImage: deprecated in iOS7 【发布时间】:2013-10-24 10:19:27 【问题描述】:setFinishedSelectedImage:withFinishedUnselectedImage:
在 ios7 中已弃用。 Apple recommends 使用 image
和 selectedImage
的设置器和 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 中已弃用的主要内容,如果未能解决你的问题,请参考以下文章