iOS 11 UIBarButtonItem 设置tintColor 点击后颜色变化

Bug起因
由于要修改一个导航控制器下的栈顶控制器的右边栏的文本颜色,方法是这样的

UIBarButtonItem * rightBarButton =
 [[UIBarButtonItem alloc]initWithTitle:@"添加" style:UIBarButtonItemStylePlain target:self action:@selector(addLicencePlateAction)];
[rightBarButton setTintColor:[UIColor redColor]];
self.navigationItem.rightBarButtonItem = rightBarButton;

这个在iOS 11 以下是好好滴,突然跑到了一个iOS 11 的手机上,就看到了这样的效果


UIBarButtonItem.gif

这个问题,在iOS 11上需要进行另外一番设置,通过UINavigationBar来实现

// 设置全局NavigationBar 填充颜色
[self.navigationController.navigationBar setTintColor:[UIColor redColor]];
    
UIBarButtonItem *rightItem =
    [[UIBarButtonItem alloc]initWithTitle:@"添加" style:UIBarButtonItemStylePlain target:self action:@selector(addCarPlates)];
self.navigationItem.rightBarButtonItem = rightItem;
UIBarButtonItem1.gif

运行一下效果变成这个样子。这样就没有问题了。

结论
关于这个问题,应该是iOS 11更新,系统修改了什么特性导致的。

推荐阅读更多精彩内容