iOS 11 UINavigationBar 后退按钮图像颜色问题
Posted
技术标签:
【中文标题】iOS 11 UINavigationBar 后退按钮图像颜色问题【英文标题】:iOS 11 UINavigationBar Back button image color issue 【发布时间】:2017-11-28 09:39:16 【问题描述】:我在 ios 11 中遇到了自定义 BackButton Image 颜色的问题。
BackButton Image 在 iOS 11 更低的版本中可以正常工作。
我使用以下代码自定义了UINavigationBar
的后退按钮图像。
[[UINavigationBar appearance] setBackgroundColor:[UIColor blackColor]];
[[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setTranslucent:false];
UIEdgeInsets insets = UIEdgeInsetsMake(0, 0, 5.0f, 0);
UIImage *backArrowImage = [[UIImage imageNamed:@"icon_nav_back"] imageWithAlignmentRectInsets:insets];
[[UINavigationBar appearance] setBackIndicatorImage:backArrowImage];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backArrowImage];
在低于 iOS11 的版本中显示正确的图像,默认颜色的图像
但是,在 iOS 11 版本中,它的颜色和大小不合适。
请提供适当的解决方案来解决此问题。
我也尝试过 Tint Color,但它不起作用。
【问题讨论】:
检查这个 SO 问题:***.com/questions/28733936/… @Damo 我已经尝试了所有这些解决方案。这对我没有帮助。 【参考方案1】:// 未经测试的代码
// 试试看能不能直接访问返回键
NSArray *leftBarButtonItems = self.navigationController.navigationBar.items.firstObject.leftBarButtonItems;
for (id barButtonItem in leftBarButtonItems)
UIBarButtonItem *item = (UIBarButtonItem*)barButtonItem;
if (item)
item.tintColor = [UIColor whiteColor];
【讨论】:
【参考方案2】:点击此链接:Swift how to change tintColor of backIndicatorImage
在此方法上设置图像setBackIndicatorTransitionMaskImage
可能会有所帮助!
[UINavigationBar appearance].translucent = NO;
[[UINavigationBar appearance] setBackIndicatorImage:backArrowImage];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backArrowImage];
更新使用下面的代码肯定是后退图片
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[backBtn setBackgroundImage:backArrowImage forState:UIControlStateNormal];
[backBtn addTarget:self action:@selector(goback) forControlEvents:UIControlEventTouchUpInside];
backBtn.frame = CGRectMake(0, 0, 54, 30);
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn] ;
self.navigationItem.leftBarButtonItem = backButton;
【讨论】:
我已经修改了我的代码,你提供给我。但这对我没有帮助。 @yashica15 你已经使用了我更新的代码,它绝对有效!! 这段代码肯定能用。但我必须将此代码粘贴到每个 ViewController 中。我想从 AppDelegate 全局更改它。 点击此链接:Swift 如何更改 backIndicatorImage 的 tintColor 让我们continue this discussion in chat。以上是关于iOS 11 UINavigationBar 后退按钮图像颜色问题的主要内容,如果未能解决你的问题,请参考以下文章
iOS 获取 UINavigationBar 的后退按钮以设置辅助功能属性