【问题标题】:UIBarButtonItem appearance and setBackButtonBackgroundImageUIBarButtonItem 外观和 setBackButtonBackgroundImage
【发布时间】:2023-03-17 00:00:01
【问题描述】:

在导航控制器中按下新视图控制器时,我更改了后退按钮。但它看起来并不好,而且它被拉长了。另外,如何删除后退按钮中的“新闻”标题? 这是我的代码。看图

代码是

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

我想实现这样的目标http://i228.photobucket.com/albums/ee262/romano2717/photo4.png

【问题讨论】:

  • 你有想过这个吗?我现在也遇到同样的问题...

标签: iphone objective-c ios uinavigationcontroller uibarbuttonitem


【解决方案1】:

使用以下代码将图像放置到位。

int imageSize = 20; //REPLACE WITH YOUR IMAGE WIDTH

UIImage *barBackBtnImg = [[UIImage imageNamed:@"NavBackButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, imageSize, 0, 0)];

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:barBackBtnImg 
                                                  forState:UIControlStateNormal 
                                                barMetrics:UIBarMetricsDefault];

您可以使用 resizableImageWithCapInsets 来指定不应拉伸的像素。如果你把你的图像宽度放在那里,它不会拉伸你的图像。

顺便说一句,您不必将其放入 .m 文件中。 (您可以使用 appDelegate.m 文件)只需确保在绘制 NavigationBar 之前调用它。

【讨论】:

  • 知道如何删除标题吗??
  • 当然:[[self navigationItem] setTitle:nil];
  • 或者你的意思是按钮的标题?
  • 我想知道在整个应用程序中删除后退按钮的按钮标题的技巧;)
  • 尝试 [[UIBarButtonItem 外观] setBackButtonTitlePositionAdjustment:UIOffsetMake(-99, -99) forBarMetrics:UIBarMetricsDefault];
【解决方案2】:

除非我遗漏了什么,否则您必须在代码中创建 UIBarButtonItem 以删除或更改标题,因此它仅适用于您将代码放入的视图控制器:

UIBarButtonItem *myBackButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back_button.png"] style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.backBarButtonItem = myBackButton;
[myBackButton release];

您发布的代码以这种方式工作的原因是因为它只设置背景,并且文档确实指出:

为了获得良好的效果,backgroundImage 必须是可拉伸的图像。

【讨论】:

    【解决方案3】:

    您可以创建自定义按钮并将其添加为条形按钮以消除拉伸。或者您可以获得返回按钮大小的图形。

    要删除按钮的标题,您必须在 viewWillDisappear 方法中设置 self.title = ""; 并在 viewWillAppear 方法中再次设置标题。

    希望这能解决您的问题。

    【讨论】:

    • 当我添加此代码时,将新视图控制器推送到导航后后退按钮消失了。
    【解决方案4】:

    使用youparentViewController.title = @" "; 标题也有同样的问题

    【讨论】:

      【解决方案5】:

      下面的代码将从后退按钮中删除标题。

      UIBarButtonItem *theBackButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:@selector(yourAction)];
          [[UIBarButtonItem appearance] setBackBarButtonItem:theBackButton];    
          [theBackButton release];
      

      【讨论】:

      • 这会在 6.0.1 上与 -[_UIBarItemAppearance setBackBarButtonItem:]: unrecognized selector sent to instance 0x208448d0 一起崩溃
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 2012-07-27
      相关资源
      最近更新 更多