如何在iOS7上更改barTintColor而不使用动画?

如何在iOS7上更改barTintColor而不使用动画?,ios,ios7,uinavigationbar,bartintcolor,Ios,Ios7,Uinavigationbar,Bartintcolor,在iOS7上,我们可以通过 self.navigationController.navigationBar.barTintColor = [UIColor redColor]; 但是这种方法在更改barTintColor时会有一个淡入淡出的动画,所以没有人知道如何防止这种动画并立即更改颜色吗 更具体地说,我编写了一个测试程序,其窗口的根控制器是navigationController。在navigationController中,有一个带有3个按钮的视图控制器。3个按钮都绑定到以下操作: -

在iOS7上,我们可以通过

self.navigationController.navigationBar.barTintColor = [UIColor redColor];
但是这种方法在更改barTintColor时会有一个淡入淡出的动画,所以没有人知道如何防止这种动画并立即更改颜色吗

更具体地说,我编写了一个测试程序,其窗口的根控制器是navigationController。在navigationController中,有一个带有3个按钮的视图控制器。3个按钮都绑定到以下操作:

- (void)onClick:(id)sender
{
    UIColor *color = nil;
    if (sender == self.redButton)
    {
        color = [UIColor redColor];
    }
    else if (sender == self.blueButton)
    {
        color = [UIColor blueColor];
    }
    else if (sender == self.blackButton)
    {
        color = [UIColor blackColor];
    }

    self.navigationController.navigationBar.barTintColor = color

//    [UIView animateWithDuration:0 animations:^{
//        self.navigationController.navigationBar.barTintColor = color;
//    }];

//    [CATransaction begin];
//    [CATransaction setDisableActions:YES];
//    self.navigationController.navigationBar.barTintColor = color;
//    [CATransaction commit];

}
将动画持续时间更改为0或使用
[CatTransaction setDisableActions:YES]
都不起作用,动画仍然存在

希望有人能帮忙,谢谢

试试看

[UIView animateWithDuration:0 animations:^{
        self.navigationController.navigationBar.barTintColor = [UIColor redColor];
}];
试一试

[UIView animateWithDuration:0 animations:^{
        self.navigationController.navigationBar.barTintColor = [UIColor redColor];
}];

您需要禁用隐式动画。您可以按如下方式执行此操作:

[CATransaction begin];
[CATransaction setDisableActions: YES];

self.navigationItem.leftBarButtonItem.tintColor = [UIColor colorWithRed:125.0/255.0 green:90.0/255.0 blue:146.0/255.0 alpha:1];

[CATransaction commit];
此技术适用于任何隐式动画。隐式动画是在更改可设置动画的属性时由iOS为您创建的动画。有关更多信息,请参见此处:


您需要禁用隐式动画。您可以按如下方式执行此操作:

[CATransaction begin];
[CATransaction setDisableActions: YES];

self.navigationItem.leftBarButtonItem.tintColor = [UIColor colorWithRed:125.0/255.0 green:90.0/255.0 blue:146.0/255.0 alpha:1];

[CATransaction commit];
此技术适用于任何隐式动画。隐式动画是在更改可设置动画的属性时由iOS为您创建的动画。有关更多信息,请参见此处:


再次设置之前,请尝试将barTintColor设置为零

self.navigationController.navigationBar.barTintColor = nil;
self.navigationController.navigationBar.barTintColor = color;

我有一个类似的问题,它为我解决了。希望有帮助。

再次设置之前,请尝试将barTintColor设置为零

self.navigationController.navigationBar.barTintColor = nil;
self.navigationController.navigationBar.barTintColor = color;

我有一个类似的问题,它为我解决了。希望有帮助。

UINavigationBar
上的
transparent
属性设置为
NO
,然后在更改条色后将其重置

self.navigationBar.translucent = NO;
self.navigationBar.barTintColor = [UIColor magentaColor];
self.navigationBar.translucent = YES;

UINavigationBar
上的
transparent
属性设置为
NO
,然后在更改条色后将其重置

self.navigationBar.translucent = NO;
self.navigationBar.barTintColor = [UIColor magentaColor];
self.navigationBar.translucent = YES;

对不起,您在navigationBar.barTintColor上试用过吗?它就是不起作用。在UITabBarController.tabBar.BartinColor上对我不起作用。对不起,你在navigationBar.BartinColor上试用过吗?它就是不起作用。在UITabBarController.tabBar.barTintColor上对我不起作用。你运行了这个代码吗?动画仍然存在,并且动画持续时间没有更改。是否运行此代码?动画仍然存在,动画持续时间不变。这是唯一对我有效的解决方案。我有一个导航栏,它可以根据手势从一种颜色渐变到另一种颜色,效果非常好。谢谢这是唯一对我有效的解决办法。我有一个导航栏,它可以根据手势从一种颜色渐变到另一种颜色,效果非常好。谢谢这是这条线索中唯一对我有效的方法。谢谢。这是这个帖子中唯一适合我的方法。谢谢