UITabBarItem图像为蓝色且未更改

Abo*_*tef 5 xcode objective-c uitabbaritem uitabbar ios

嗯使用我自己的TabBarController,ElWafyatTabBarController基本上它继承UITabBarController.

ElWafyatTabBarController.m -> viewDidLoad

我已经创建了一些ViewControllers,然后我UINavigationController用rootViewController 创建了viewControllers我之前做过的步骤.

然后我创建UITabBarItem并设置了每个导航控制器的图像和标题,这rootViewController对于我在第一步中创建的viewControllers,并将tabBarItem这些设置为navigationController这些tabBarItem.

我发现的问题甚至UITabBarItem是正确显示的标题,但图像显示为蓝色.

仅供参考:我创建了两个名为test.png和test@2x.png的图片,尺寸为32x32和64x64,我仍有这些问题,所以任何人都可以提供帮助吗?

这是我的代码:

ElWafyatTabBarController - > viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];
    HomeViewController *homeViewController = [[HomeViewController alloc]
        initWithNibName:@"HomeViewController" bundle:nil];
    NaaiViewController *naaiViewController = [[NaaiViewController alloc]
        initWithNibName:@"NaaiViewController" bundle:nil];
    MushatraViewController *mushatraViewController = [[MushatraViewController alloc]
        initWithNibName:@"MushatraViewController" bundle:nil];
    TakremViewController *takremViewController = [[TakremViewController alloc]
        initWithNibName:@"TakremViewController" bundle:nil]
    UINavigationController *homeNavC = [[UINavigationController alloc]initWithRootViewController:homeViewController];
    UINavigationController *naaiNavC = [[UINavigationController alloc]initWithRootViewController:naaiViewController];
    UINavigationController *mushatraNavC = [[UINavigationController alloc]initWithRootViewController:mushatraViewController];
    UINavigationController *takremNavC = [[UINavigationController alloc]initWithRootViewController:takremViewController];

    // Setup Controllers for Tab Bar. (first level).
//    [homeNavC.tabBarItem setTitle:@"????????"];
//    [naaiNavC.tabBarItem setTitle:@"???"];
//    [mushatraNavC.tabBarItem setTitle:@"??????"];
//    [takremNavC.tabBarItem setTitle:@"?????"];

    homeNavC.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor];
    naaiNavC.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor];
    mushatraNavC.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor];
    takremNavC.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor];

    homeNavC.navigationBar.barStyle = UIBarStyleBlack;
    naaiNavC.navigationBar.barStyle = UIBarStyleBlack;
    mushatraNavC.navigationBar.barStyle = UIBarStyleBlack;
    takremNavC.navigationBar.barStyle = UIBarStyleBlack;

    UITabBarItem* tabBarItem =  [[UITabBarItem alloc] initWithTitle:@"Colors" image:[UIImage imageNamed:@"test.png"] tag:9];

    homeNavC.tabBarItem = tabBarItem;

    myViewControllers = [ NSArray arrayWithObjects:takremNavC, mushatraNavC, naaiNavC, homeNavC,nil];
    [self setViewControllers:myViewControllers animated:YES];
    [self.tabBarController setSelectedIndex:3];
    [self setSelectedIndex:3];
} 
Run Code Online (Sandbox Code Playgroud)

这些输出:

在此输入图像描述

rde*_*mar 11

如果要查看图像,则需要将图像的渲染模式设置为UIImageRenderingModeAlwaysOriginal,否则图像将显示为模板图像.您应该阅读标签栏上的文档,它有以下声明:

标签栏项目图标

标签栏中的每个项目都可以包含自定义选定图像和未选择图像.使用initWithTitle:image:selectedImage:方法初始化选项卡栏项时,可以指定这些图像.请注意,除非您将其渲染模式显式设置为UIImageRenderingModeAlwaysOriginal,否则选项卡栏项目图像将自动呈现为选项卡栏中的模板图像.有关更多信息,请参阅模板图像.


Zai*_*han 8

Assets.xcassets > Click on you image > Attribute Inspector > Render As > Original Image

原图