UITabBarController 未选择的图标图像色调

Posted

技术标签:

【中文标题】UITabBarController 未选择的图标图像色调【英文标题】:UITabBarController unselected icon image tint 【发布时间】:2013-09-26 18:43:50 【问题描述】:

我有一个正在尝试修改的 UITabBarController。现在,未选择的选项卡图标图像默认为灰色。我知道您无法以编程方式更改这些未选择的图标图像的色调。苹果表示,色调由 png 文件本身的实际色调控制。因此,如果您想要白色或绿色图标图像,则必须使用将图像显示为白色或绿色等的 png。之后,您必须使用 UIImageRenderingModeAlwaysOriginal 和 initWithTitle:image:selectedImage:我在我的 FirstViewController.m 和我把它放在-(void)viewDidLoad 中。但是,我遇到了一个解析问题:预期的标识符及其指向 nil 之后的括号。有人看到这段代码有问题吗?

//
//  FirstViewController.m
//  tabmock5
//
//  Created by USER on 9/26/13.
//  Copyright (c) 2013 USER. All rights reserved.
//

#import "FirstViewController.h"

@interface FirstViewController ()

@end

@implementation FirstViewController

- (void)viewDidLoad

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

[self.tabBarItem initWithTitle:[nil]image:[UIImage imageNamed:@"white_stats.png"]selectedImage:[UIImage imageNamed:@"white_stats.png"]];

[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

【问题讨论】:

【参考方案1】:
[[UIImage imageNamed:@"white_stats.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

这不会将图像保存在任何地方。将其更改为:

UIImage *myImage = [[UIImage imageNamed:@"white_stats.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

还有这个:

[self.tabBarItem initWithTitle:[nil]image:[UIImage imageNamed:@"white_stats.png"]selectedImage:[UIImage imageNamed:@"white_stats.png"]];

nil 不是对象(它不在方括号中)。将其更改为:

[self.tabBarItem initWithTitle:nil image:myImage selectedImage:[UIImage imageNamed:@"white_stats.png"]];

或者,从技术上讲,您可以在一行中完成此操作:

[self.tabBarItem initWithTitle:nil image:[[UIImage imageNamed:@"white_stats.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[UIImage imageNamed:@"white_stats.png"]];

但如果您需要稍后再看它,这很难阅读,所以不要这样做。

【讨论】:

以上是关于UITabBarController 未选择的图标图像色调的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将 UITabBarController 中 TabBarItem 中的图标居中

使选定的 UITabBarController 项目图标更大

UITabBarController 未显示其内容的所有大小(UIViewController)

在 UITabBarController 内未调用 cellForRowAtIndexPath

UISplitViewController 内的 iOS 13 UITabBarController 未正确折叠

UITabBarController canBecomeFirstResponder 方法未被调用