iPhone - 设置应用程序宽的导航栏后退按钮没有文字

ben*_*ink 3 iphone uinavigationcontroller uiappearance

我已使用外观属性将图像设置为我的应用中所有导航栏后退按钮的背景图像.我使用applicationDidLoad方法中的以下代码执行此操作.

UIImage *backButton = [UIImage imageNamed:@"btn-nav-back"];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

我的问题是,只要后退按钮出现,图像就会被拉伸,因为前一个视图的名称被设置为后退按钮的标题.是否有系统范围的方法我可以停止设置标题?同时尝试在实际视图控制器中将后退按钮的标题设置为空白无效:(

[self.navigationItem.backBarButtonItem setTitle:@""];
Run Code Online (Sandbox Code Playgroud)

pre*_*pre 9

我找到了实现你想要的方法.

首先使您的背面图像可调整大小,以便它不会被拉伸到后退按钮的长度:

UIImage* backImage = [[UIImage imageNamed:@"back"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 20, 0, 0)];
Run Code Online (Sandbox Code Playgroud)

通过UIAppearance将此图像设置为backButtonBackgroundImage:

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

最后,将标题移出可见区域:

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000, -1000) forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

唯一的缺点是,backButton的宽度没有改变,所以你的UINavigationBar标题可能偏离中心.