在“更多”菜单中更改UITabBar色调颜色

时间:2014-09-29 17:27:29

标签: ios uitabbar tintcolor

我试图更多菜单中的图标更改蓝色。我尝试了几乎我在Stack Overflow上找到的所有内容,但没有任何效果。 我试过这个solution,但是没有用。

我发现改变颜色的唯一选择是

[[UIView appearance] setTintColor:[UIColor redColor]];

但它会改变应用中的所有颜色。

tint color not changed tint colour changed using UIView appearance tint color

代码只是一个带有故事板的新项目,所以我只是在故事板上添加了视图 谢谢你的帮助。

编辑:我添加了代码后:

    UIImage *myImage = [[UIImage imageNamed:@"music.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
self.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"New Title" image:myImage selectedImage:[UIImage imageNamed:@"music.png"]];

选择视图时图像会发生变化,但图像仍为蓝色。

3 个答案:

答案 0 :(得分:7)

要做你需要的,你应该通过为每个控制器创建UITabBarItem来使用图像,并添加图像和选定的图像。

请参阅Apple Documentation about UITabBarItem

否则请看@Aaron Brager:

查看完整代码后编辑 首先,你的项目有很多错误,资产应该在xcassets文件夹中,在视图中,在'super viewDidLoad'之后执行你的代码编写等等。

关于您的问题,在FirstViewController的viewDidLoad方法

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // Your code start here, not before the super
    [[UITabBar appearance] setTintColor:[UIColor redColor]];

    // Get table view of more new viewController
    UITableView *view =(UITableView*)self.tabBarController.moreNavigationController.topViewController.view;

    view.tintColor = [UIColor redColor]; // Change the image color

    if ([[view subviews] count]) {
        for (UITableViewCell *cell in [view visibleCells]) {
            cell.textLabel.textColor = [UIColor redColor]; // Change the text color

        }
    }
}

答案 1 :(得分:0)

这是Ludovic's answer的Swift版本。

请记住,此版本仅更改色调颜色,因为原始答案以非常黑客的方式更改了文本颜色。要正确更改,您必须覆盖moreNavigationController及其cellForRowAt功能。

tabBarController?.tabBar.tintColor = .red

if let moreTableView = tabBarController?.moreNavigationController.topViewController?.view as? UITableView {
    moreTableView.tintColor = .red
}

答案 2 :(得分:0)

更改此按钮的颜色

def shape(n): 
    st = ""
    nums = ""
    for i in range(n,0,-1):
        nums = nums + str(i)
        st = nums + "." * (2*(i-1)) + nums[::-1]
        print (st)

enter image description here