UITabBarItem setFinishedSelectedImage:在iOS7中已弃用
setFinishedSelectedImage:withFinishedUnselectedImage:
在iOS7中已弃用。 苹果推荐使用UIImageRenderingModeAlwaysOriginal
的image
和selectedImage
setter。 我找不到如何使用UIImageRenderingModeAlwaysOriginal
任何示例。 所以这个问题很简单:如何在iOS7中为UITabBarItem
设置图像?
如果你正试图在UITabBar上实现显示实际图像,那么使用下面的代码。
[yourTabBarItem setImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
如果要以所选的原始状态显示图像,请使用以下内容
[yourTabBarItem setSelectedImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
这两个是替代
setFinishedSelectedImage: withFinishedUnselectedImage:
setFinishedSelectedImage
被弃用,因为苹果希望将接口定向到使用模板图像和你select的tintColor(或者蓝色的默认值)。所以,简单的默认是这样做的标签栏条目。
如果您仍然需要按照devise使用Icon图像,则可以使用Always Origin的渲染模式创build图像。 喜欢:
[[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]]; }
结果是select标签时devise的图标。 如果离开imageWithRenderingMode方法调用,图标将被视为使用tintColor着色的模板。 希望这可以帮助。
class TabBarController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() self.tabBar.backgroundImage = UIImage() self.tabBar.shadowImage = UIImage() } }