UINavigationBar形状的自定义后退按钮

问题描述:

即时尝试为我的应用程序的导航栏设置自定义后退按钮。现在即时通讯使用此代码来做到这一点:UINavigationBar形状的自定义后退按钮

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"backbutton.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

这最终扭曲了我的形象,并使其伸展。它也增加了文字。 我该如何制作它才能显示这张图片?

以下是图像:http://thai-flashcards.info/images/arrow-blue-rounded-left.jpg?1303347394

+0

见http://stackoverflow.com/a/15644778/412916 – Jano 2013-03-27 23:27:37

什么你要找的是具有伸缩性的图像。

这应该让你整理出来:

http://idevrecipes.com/2010/12/08/stretchable-images-and-buttons/

编辑:看你的形象,我不认为这会工作。

您将不得不制作一个自定义UIButton并将您的后退按钮设置为该自定义按钮并自行处理ViewController弹出窗口。

您可以像这样设置/设置按钮。

UIImage *buttonImage = [UIImage imageNamed:@"mybuttonimage.png"]; 
UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[doneButton addTarget:self action:@selector(goBack)forControlEvents:UIControlEventTouchUpInside]; 

[doneButton setImage:buttonImage forState:UIControlStateNormal]; 

UIBarButtonItem *backButton = [[UIBarButtonItem alloc]initWithCustomView:doneButton]; 

    self.navigationItem.leftBarButtonItem = backButton; 

而且你需要添加你的方法GoBack的

-(void)goBack { // Go Back 

    [self.navigationController popToViewController: 
    [self.navigationController.viewControllers objectAtIndex:3] animated:YES]; 
} 
+0

制作自定义barButton之后,在UINavigationBar.backItem中设置“UINavigationItem”的'backBarButtonItem'处理y OU? – 2013-03-27 23:30:21

+1

其实不!我不知道为什么苹果不支持它,但:http://stackoverflow.com/questions/4964276/self-navigationitem-backbarbuttonitem-not-working-why-is-the-previous-menu-st – 2013-03-27 23:37:52

+0

哦,是啊, 好。感谢您的澄清! – 2013-03-27 23:45:48

添加在AppDelegate中下didFinishLaunchingWithOptions

UIImage *backBtnIcon = [UIImage imageNamed:@"back.png"]; 
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, -30) forBarMetrics:UIBarMetricsDefault];