如何以编程方式更改标签栏的背景颜色?

时间:2017-03-12 06:29:03

标签: ios swift uitabbar

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

例如,默认值如下所示

enter image description here

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

import UIKit

class MyTabController: UITabBarController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.tabBar.backgroundColor = .black
    }
}

结果与我的预期不同。

enter image description here

我认为这可能是它的颜色,然后我改为自定义UIColor,颜色看起来完全一样。

我也尝试更改条纹色调,但它在活动时更改图标的颜色,而不是背景

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

结果将是

enter image description here

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您应该使用self.tabBar.barTintColor或查看UIBarStyleself.tabBar.barStyle,看看是否有效。

答案 1 :(得分:0)

我的应用程序遇到了同样的问题,但我想在tabbar背景中设置渐变图像,我想出了以下内容: 在 applicationDidFinishLaunching 方法中,我创建了一个绘制渐变的函数,并使用我的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;
}

获取UITabBarController的实例

UITabBarController *tabVC = (UITabBarController *)[UIApplication sharedApplication].windows.firstObject.rootViewController;

设置渐变

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

我不确定这是否是正确的方法,但它对我有用。