Ios 如何通过编程更改选项卡栏的背景色?

Ios 如何通过编程更改选项卡栏的背景色?,ios,swift,uitabbar,Ios,Swift,Uitabbar,我的目标很简单,将选项卡栏的默认背景颜色更改为我自己的颜色 例如,默认值如下所示 我创建了自己的UITabBarController子类,因此不需要更改每个UIViewController上的颜色 import UIKit class MyTabController: UITabBarController { override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated)

我的目标很简单,将选项卡栏的默认背景颜色更改为我自己的颜色

例如,默认值如下所示

我创建了自己的UITabBarController子类,因此不需要更改每个UIViewController上的颜色

import UIKit

class MyTabController: UITabBarController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.tabBar.backgroundColor = .black
    }
}
UITabBarController *tabVC = (UITabBarController *)[UIApplication sharedApplication].windows.firstObject.rootViewController;
结果与我预期的不一样

我想可能是颜色的问题,然后我换了一种定制的UIColor,颜色看起来完全一样

我也尝试过改变色条的颜色,但它会在激活时改变图标的颜色,而不是背景

self.tabBar.tintColor = UIColor(red:1.00, green:0.23, blue:0.19, alpha:1.0)
结果将是


我做错了什么?

你应该使用
self.tabBar.bartincolor
或者查看一下
self.tabBar.barStyle
,看看是否有效。

我的应用程序也有同样的问题,但我想在tabBar背景中设置一个渐变图像,我提出了以下建议: 在ApplicationIDFinishLaunching方法中,我创建了一个函数来绘制渐变,并使用我的UITabBarController实例根据设备的宽度设置正确的渐变帧

- (UIImage *)drawGradientInView:(UITabBarController *) tabBarVC {
    CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = CGRectMake(CGRectGetMinX(tabBarVC.tabBar.frame), CGRectGetMinY(tabBarVC.tabBar.frame), CGRectGetWidth(tabBarVC.view.frame), CGRectGetHeight(tabBarVC.tabBar.frame));

    //set up your gradient
    //......

    UIImage *gradientImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return gradientImage;
}
获取uitabarcontroller的实例

import UIKit

class MyTabController: UITabBarController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.tabBar.backgroundColor = .black
    }
}
UITabBarController *tabVC = (UITabBarController *)[UIApplication sharedApplication].windows.firstObject.rootViewController;
设置你的梯度

[UITabBar appearance].backgroundImage = [self drawGradientInView:tabVC];

我不确定这是否是一种正确的方法,但它确实对我有效。

barTintColor只需更改图标的颜色而不是背景现在只是为了确定,您尝试了barTintColor而不是tintColor?使用[UITabBar外观]这是一个很好的swift答案