UINavigationBar 后退按钮图标

Posted

技术标签:

【中文标题】UINavigationBar 后退按钮图标【英文标题】:UINavigationBar back button icon 【发布时间】:2014-05-02 20:16:50 【问题描述】:

我想从一开始就进行前后导航。所以我在导航栏中添加了一个按钮,但是我想要确切的 ios 图标,后面有文字。

我怎样才能自己得到这个东西而无需以编程方式导航?我使用故事板。

忽略背景颜色我的意思是这个图标:

我不使用导航控制器我使用页面视图控制器,这就是原因。如果文本是图标的一部分,我不知道这个图标是如何工作的,所以我希望有人知道。

【问题讨论】:

您是否已经有了导航栏和一个您希望用作后退按钮的按钮?如果是的话,我也许可以帮忙。 我想在第一页获得标准的后退按钮 我在页面视图控制器方面没有太多工作,但如果您在第一页上有导航栏,我可以帮助您制作自定义后退按钮。 我目前有一个只有文本或图像的左键,正如您在问题中看到的导航控制器提供的标准后退按钮在它旁边使用一个小图标,我想知道其中的文本是否案例在图像内。 不确定我是否理解?上面的图片,黄色背景,带有文字的箭头,是你有的吗?你想要什么? 【参考方案1】:

我现在明白你想要做什么了。我不久前做过这个。我实际上必须自己制作按钮。你说你有一个左键,这需要你的 .h 文件中有一个出口。如果您愿意,我们现在将其称为 leftButton。您将需要一些图像,因此我将包括我制作的图像。我在Paint Code 中制作它们。这是 99 美元,但这是我作为 App 设计师做过的最好的投资之一。他们来了。我给他们打了电话,然后 whiteSpace..

最后两张图片是空白,因此请确保您也获得了它们。将它们从该页面拖到您的桌面,然后将它们拖到您的项目中,确保单击目标,执行此操作时复制到文件夹中。一旦你有了图标,剩下的就以编程方式完成。在您的 viewDidLoad 方法中,您将更改 leftButton 的外观。

//First get the images
UIImage *arrow = [UIImage imageNamed:@"back.png"];
UIImage *wordSpace = [UIImage imageNamed:@"whiteSpace.png"];

//Next make a size of the image or it will be distorted
CGSize size = CGSizeMake(arrow.size.width + wordSpace.size.width, arrow.size.height);

//Put the two images together
UIGraphicsBeginImageContext(size);
[arrow drawInRect:CGRectMake(0, 0, arrow.size.width, size.height)];
[wordSpace drawInRect:CGRectMake(arrow.size.width, 0, wordSpace.size.width, wordSpace.size.height)];
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

//Assign the icon to the button
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonClicked)];
[backButton setBackgroundImage:finalImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

//Move title over a bit to make it look nice
[backButton setTitlePositionAdjustment:UIOffsetMake(-20, 0) forBarMetrics:UIBarMetricsDefault];

//Make your button this new backButton
_leftButton = backButton;

现在您有一个自定义的后退按钮,您可以分配@selector(backButtonClicked)。我不确定您使用的是页面控制器这一事实,但在我的情况下,我使用了 popViewController。但我确实在项目中有一个导航控制器。您可能需要使用另一种方法调用正确的 VC。但这是 backButtonClicked。

- (void)backButtonClicked

  //NSLog(@"going back");
  [self.navigationController popViewControllerAnimated:YES];
  //change to call your VC

所以除了调用你想要的视图控制器之外应该这样做。如果您不知道如何以编程方式调用视图控制器,here 是一个链接。

【讨论】:

以上是关于UINavigationBar 后退按钮图标的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationBar 中的多色后退按钮

如何向 UINavigationBar 添加后退按钮?

更改 UINavigationBar 后退按钮标题

iOS 11 UINavigationBar 后退按钮图像颜色问题

iOS 7 UINavigationBar 隐藏了后退按钮

UINavigationBar 后退按钮标题更改方向更改