我尝试更换默认导航栏后退按钮图片:
UIImage *backButtonImage = [UIImage imageNamed:@"back_button"] ;
backButtonImage = [backButtonImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, backButtonImage.size.width, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
我得到的是:
我想要的是:
如何?原始图像为11x44点。
编辑:申请后,
[UINavigationBar appearance].backIndicatorImage = backButtonImage;
[UINavigationBar appearance].backIndicatorTransitionMaskImage = backButtonImage;
我明白了:
我花了好几个小时试图让箭头向下移动,使其与导航栏中的标题文字垂直对齐,但无济于事。我已经看到其他线程遇到同样的问题,但没有解决方案。为什么这么难?似乎每个人都需要替换后退按钮图像。
答案 0 :(得分:4)
试试这段代码:
UIImage *backBtnIcon = [UIImage imageNamed:@"backNavIcon.png"];
if (([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)) {
[UINavigationBar appearance].backIndicatorImage = backBtnIcon;
[UINavigationBar appearance].backIndicatorTransitionMaskImage = backBtnIcon;
}
else{
UIImage *backButtonImage = [backBtnIcon resizableImageWithCapInsets:UIEdgeInsetsMake(0, backBtnIcon.size.width - 1, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -backButtonImage.size.height*2) forBarMetrics:UIBarMetricsDefault];
}
不要忘记将3张图片1x,@ 2x和@ 3x放入图片资源中。
请查看Apple文档中的UIElements以获取后退按钮。
谢谢!
答案 1 :(得分:1)
您可以使用基于@" back_button"的CGContextRef创建一个新的UIImage。图像,在其右侧绘制1点宽度的透明空间,以便您可以调用resizableImageWithCapInsets:UIEdgeInsetsMake(0, backButtonImage.size.width - 1, 0, 0)
。