Ios 选项卡栏项目的着色颜色不变

Ios 选项卡栏项目的着色颜色不变,ios,objective-c,uitabbaritem,Ios,Objective C,Uitabbaritem,我有一个有5个标签的标签栏。我为选项卡栏项目的选中状态和未选中状态放置了不同的图像 无论我做什么,着色颜色都不会改变,也不会适应图像颜色 选中选项卡时,颜色应为黑色,未选中时,颜色应为橙色 这是属性检查器的图像,其中包含指定的图像 选项卡栏的图像 如何更改图像颜色?问题是您无法控制未选定项目的色调颜色。这不是你代码的错;这就是iOS的工作原理。这曾经是可能的,但在某个时候(iOS 7?不记得了),它就消失了 因此,在屏幕截图中发生的是,您已将选定的色调设置为橙色,这就是结束。一个选项卡栏项目

我有一个有5个标签的标签栏。我为
选项卡栏项目的
选中状态和
未选中状态放置了不同的图像

无论我做什么,着色颜色都不会改变,也不会适应图像颜色

选中选项卡时,颜色应为黑色,未选中时,颜色应为橙色

这是属性检查器的图像,其中包含指定的图像

选项卡栏的图像


如何更改图像颜色?

问题是您无法控制未选定项目的色调颜色。这不是你代码的错;这就是iOS的工作原理。这曾经是可能的,但在某个时候(iOS 7?不记得了),它就消失了


因此,在屏幕截图中发生的是,您已将选定的色调设置为橙色,这就是结束。一个选项卡栏项目是select,它是橙色。

问题是您无法控制未选中项目的色调。这不是你代码的错;这就是iOS的工作原理。这曾经是可能的,但在某个时候(iOS 7?不记得了),它就消失了


因此,在屏幕截图中发生的是,您已将选定的色调设置为橙色,这就是结束。一个选项卡栏项目是select,它是橙色的。

解决方案之一是提供两组选项卡图标。有一个帖子与你的情况非常相似,你可以看看:

我认为这段代码(由Tunvir Rahman Tusher编写)解释得很好:

UITabBarItem *tabBarItem1=[[tabBar items] objectAtIndex:0];//first tab bar
[tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"yourImageSelected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"yourImageUnselected.png"]];//image should be 30 by 30

解决方案之一是提供两组选项卡图标。有一个帖子与你的情况非常相似,你可以看看:

我认为这段代码(由Tunvir Rahman Tusher编写)解释得很好:

UITabBarItem *tabBarItem1=[[tabBar items] objectAtIndex:0];//first tab bar
[tabBarItem1 setFinishedSelectedImage:[UIImage imageNamed:@"yourImageSelected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"yourImageUnselected.png"]];//image should be 30 by 30

如果您正在为IOS 10或更高版本开发,您可以更改未选择的着色颜色,在旧版本中,您只能更改选定的着色颜色;下面是一个实现:

1) 使用选项转到appDelegate/application DidFinishLaunching:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    //Check if rootViewController is TabBar
    if (window?.rootViewController as? UITabBarController) != nil {

        //Change unselected TintColor
        (window?.rootViewController as! UITabBarController).tabBar.tintColor = UIColor(red: 255/255, green: 102/255, blue: 0, alpha: 1.0)

        //If system has IOS 10 or newer
        if #available(iOS 10.0, *) {
            //Change Unselected Tint Color
            (window?.rootViewController as! UITabBarController).tabBar.unselectedItemTintColor = UIColor.black
        } else {
            // Fallback on earlier versions
        }

    }

    return true
}

如果您正在为IOS 10或更高版本开发,您可以更改未选择的着色颜色,在旧版本中,您只能更改选定的着色颜色;下面是一个实现:

1) 使用选项转到appDelegate/application DidFinishLaunching:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    //Check if rootViewController is TabBar
    if (window?.rootViewController as? UITabBarController) != nil {

        //Change unselected TintColor
        (window?.rootViewController as! UITabBarController).tabBar.tintColor = UIColor(red: 255/255, green: 102/255, blue: 0, alpha: 1.0)

        //If system has IOS 10 or newer
        if #available(iOS 10.0, *) {
            //Change Unselected Tint Color
            (window?.rootViewController as! UITabBarController).tabBar.unselectedItemTintColor = UIColor.black
        } else {
            // Fallback on earlier versions
        }

    }

    return true
}

你是对的。事情就是这样。现在我该如何更正它?你不能使用着色图像。您必须使用非着色的
图像
和非着色的
选择的图像
,现在这些图像的颜色(和透明度)将直接使用。从ios 10+开始,您可以通过编程方式在应用程序中使用:
tabBarCtrl.tabBar.unselectedItemTintColor=UIColor.gray
,您是对的。事情就是这样。现在我该如何更正它?你不能使用着色图像。您必须使用非着色的
图像
和非着色的
选择的图像
,现在这些图像的颜色(和透明度)将直接使用。从ios 10+开始,您可以通过编程方式在应用程序中使用:
tabBarCtrl.tabBar.unselectedItemTintColor=UIColor.gray