UIBarButtonItem外观和setBackButtonBackgroundImage

时间:2012-01-12 07:55:32

标签: iphone objective-c ios uinavigationcontroller uibarbuttonitem

在我的navigationcontroller中按下新的viewcontroller时,我改变了我的后退按钮。但它看起来并不好看而且它很紧张。另外,如何删除后退按钮中的“新闻”标题? 这是我的代码。看图像

screen shoot

,代码是

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

我希望实现类似http://i228.photobucket.com/albums/ee262/romano2717/photo4.png

的目标

5 个答案:

答案 0 :(得分:18)

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

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之前调用它。

答案 1 :(得分:0)

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

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

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

  

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

答案 2 :(得分:0)

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

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

希望这能解决您的问题。

答案 3 :(得分:0)

使用youparentViewController.title = @“”; 我的标题确实存在同样的问题

答案 4 :(得分:-3)

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

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