iOS11导航栏系统返回键箭头偏移

自定义导航栏返回键有多重方式,系统返回键、左键、或者自定义导航栏等等;
下面介绍的是系统返回键自定义图片、文字样式
1、替换返回键图片
UIImage*back = [[UIImage imageNamed:YLNavBackIconName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[UINavigationBar appearance].backIndicatorTransitionMaskImage = back;
[UINavigationBar appearance].backIndicatorImage = back;
2、文字替换
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:nil action:nil];

之前使用的好好地,产品不断迭代更新,返回键样式一直改,某一天突然发现返回箭头不居中,向上偏移了。

然后尝试各种方法让其与文字居中,方法如下:
研究发现系统返回键尺寸:13*21,发现超过这个尺寸才会偏移,图片尺寸调整比这个高度小,完美显示。
但是我们的适老化,箭头比较大,这个方法不行,继续尝试。

方案二:
UIImage*back = [[UIImage imageNamed:YLNavBackIconName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
//隐藏系统的
[UINavigationBar appearance].backIndicatorTransitionMaskImage = [UIImage new];
[UINavigationBar appearance].backIndicatorImage = [UIImage new];
//设置新的
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[back resizableImageWithCapInsets:UIEdgeInsetsMake(0, back.size.width, 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
解决。

方案三:
不需要返回文字,能解决箭头居中
if (@available(iOS 11.0, *)) { //箭头偏移
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -10) forBarMetrics:UIBarMetricsDefault];
}
要不然只能自定义导航栏了。

上一篇:2020 — iOS 面试败北感悟


下一篇:ios 常用基础控件属性