我使用外观属性将图像设置为应用程序中所有导航栏后退按钮的背景图像。我在 applicationDidLoad 方法中使用以下代码来完成此操作。
UIImage *backButton = [UIImage imageNamed:@"btn-nav-back"];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
我的问题是,每当出现后退按钮时,由于前一个 View 的名称被设置为后退按钮的标题,图像就会被拉伸(stretch)。有没有一种系统范围的方法可以阻止标题的设置?尝试在实际 View Controller 中将后退按钮的标题设置为空白也没有效果:(
[self.navigationItem.backBarButtonItem setTitle:@""];
最佳答案
我找到了一种方法来实现你想要的。
首先调整后退图像的大小,这样它就不会拉伸(stretch)到后退按钮的长度:
UIImage* backImage = [[UIImage imageNamed:@"back"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 20, 0, 0)];
通过UIAppearance将此图像设置为backButtonBackgroundImage:
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
最后,将标题移出可见区域:
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000, -1000) forBarMetrics:UIBarMetricsDefault];
唯一的缺点是,backButton 的宽度没有改变,因此您的 UINavigationBar
标题可能会偏离中心。
关于iPhone - 设置应用程序宽导航栏后退按钮没有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979659/