0

我想在我的navigationController中使用图像作为我的backButton。我只是想使用的图像,与所有显示没有“回来”的文字,所以我所做的:UIBarButtonItem backButton设置图像没有背文本会导致标题对齐问题

UIImage *backButtonImage = [[UIImage imageNamed:@"ZSSBackButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 25, 0, 0)]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, backButtonImage.size.height*2) forBarMetrics:UIBarMetricsDefault]; 

这种运作良好,但似乎有副作用使长navigationItem标题似乎是偏离中心,即使它真的只是留下的空白,其中后退按钮文本应该是:

enter image description here

有没有一种方法,我可以把标题更向左一点?

+0

你有没有得到任何解决方案? –

回答

0

您可以使用titleView属性来管理UINavigationbar标题的位置。

UIView *backView =[[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 40)];// Here you can set View width and height as per your requirement for displaying titleLbl position in navigationbar 
[backView setBackgroundColor:[UIColor clearColor]]; 
UILabel *titleLbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 40)]; 
[backView addSubview:titleLbl]; 
titleLbl.text = @"YOUR TITLE"; 
titleLbl.textAlignment = NSTextAlignmentCenter; 
self.navigationItem.titleView = backView; 

编辑:您可以创建自定义按钮并指定其为leftbutton:

UIButton *btnBack = [UIButton buttonWithType:UIButtonTypeCustom]; 
btnBack.frame = CGRectMake(0,0,51,31); 
[btnBack setBackgroundImage:[UIImage imageNamed:@"ZSSBackButton"] forState:UIControlStateNormal]; 
[btnBack addTarget:self action:@selector(btnBackProfile_TouchUpInside:) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *leftBtn = [[UIBarButtonItem alloc] initWithCustomView:btnBack]; 
[self.navigationItem setLeftBarButtonItem:leftBtn]; 

希望它可以帮助你。

+0

是的,我已经完成了这个,但是当你必须在右侧显示一个'UIBarButtonItem'时,这是一个痛苦。事情搞砸了。 –

+0

我已经使用过很多次了。适用于我。您需要根据需要设置backview框架和titlelbl框架。 –

+0

检查我更新的答案。我已经传递了自定义按钮并设置了导航栏的左侧按钮。 –