【问题标题】:UINavigationBar barButtonItem change back button image and titleUINavigationBar barButtonItem 更改返回按钮图像和标题
【发布时间】:2014-12-04 13:42:17
【问题描述】:

是否可以更改 UINavigationBar 上的后退按钮并更改标题?

当我尝试设置 customView 属性时,我会在默认按钮旁边看到一个图像。

我用这个代码

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithImage:backButtonImage landscapeImagePhone:nil style:UIBarButtonItemStylePlain target:nil action:nil];

我希望标题为“Back”,这在 Storyboard 中很容易做到。但问题是,无论我使用上面的代码还是使用 customView 属性,默认的后退按钮都会保留。

【问题讨论】:

    标签: ios objective-c uinavigationbar


    【解决方案1】:

    您可以将UIImage 添加到UIButton。然后,将其用作自定义后退按钮。这是一个简单的例子:

    // Custom image
    UIImage *backButtonImage = [UIImage imageNamed:@"button-background-image.png"];
    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [backButton setFrame:CGRectMake(0, 0, 100, 30)];
    [backButton setBackgroundImage:backButtonImage forState:UIControlStateNormal];
    
    // Custom title
    [backButton setTitle:@"Back" forState:UIControlStateNormal];
    [backButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    [backButton addTarget:self action:@selector(barPayButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    [backButton setShowsTouchWhenHighlighted:NO];
    
    UIBarButtonItem *buttonOnBar =[[UIBarButtonItem alloc] initWithCustomView:backButton];
    self.navigationItem.leftBarButtonItem = buttonOnBar;
    

    注意:您将松开 iOS7 中引入的 V 形(系统提供的后退箭头)。它作为标题和 chevron 一起呈现您以前的视图控制器。

    更新:

    您还可以使用UIEdgeInsets 智能调整图像大小。

    UIEdgeInsets edgeInsets = UIEdgeInsetsMake(0, 0, 15, 10); 
    UIImage *backButtonImage = [[UIImage imageNamed:@"button-background-image.png"] resizableImageWithCapInsets:edgeInsets];
    

    【讨论】:

    • 我是否需要在图像中添加“返回”标题才能显示它,还是有办法将其与按钮/图像组合分开设置?
    • @noobsmcgoobs 更新了组合。它有点棘手 - 你必须对背景图像坐标非常谨慎。我已经对其进行了硬编码(100,30)。一旦你做对了 - 做 self.view.frame.size.width (或高度)以适应其中的标题。
    • 是的,它会拉伸图像以添加文本。我只是要更改按钮框架并将文本添加到图像中。谢谢。
    • 当然。有趣的是:我今天花了一整天的时间来保留我们通过这样做(添加自定义图像/标题)松开的“人字形”箭头 - 我失败了。很高兴能帮到你。
    • 要么是,要么看起来。我不认为该框架提供了那种程度的灵活性。如果您深入挖掘该对象的底层结构,则可能会这样做,尽管太痛苦了。
    【解决方案2】:

    您可以通过将视图控制器的navigationItem.leftBarButtonItem 设置为您想要的外观来实现您想要的效果。祝你好运!

    【讨论】:

      猜你喜欢
      • 2012-05-03
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      相关资源
      最近更新 更多