项目中使用
UIImage *backImg = [[UIImage imageNamed:@"kqBlack_back_icon"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 30, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backImg forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

整体设置导航栏返回按钮, 在ios11之前都是好的,但是ios11之后,就出现了问题,返回按钮被遮盖了,就剩下一点点,如图所示:

解决方法:
1, 不使用UIImage *backImg = [[UIImage imageNamed:@"kqBlack_back_icon"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 30, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backImg forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 整体设置返回按钮,将这两句代码注释掉或者删掉.

2, 重写- (void)pushViewController:(UIViewController*)viewController animated:(BOOL)animated 方法,我的项目里是直接自己创建的添加手势的NavigationController,没有使用系统的手势,所以是自定义的NavigationController.
在导航控制器里重写pushViewController方法,并添加返回按钮:

这样就可以解决在ios11.0 or 11+ 上导航栏的返回按钮被遮盖的问题了,而且还可以整体设置,不用再每个controller里单独设置.
网友评论