UIBarButtonItem外观和setBackButtonBackgroundImage

Dif*_*ffy 14 iphone objective-c uinavigationcontroller uibarbuttonitem ios

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

屏幕拍摄

而代码是

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[UIImage imageNamed:@"back_button.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

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

Tie*_*eme 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];
Run Code Online (Sandbox Code Playgroud)

您可以使用resizableImageWithCapInsets指定不应拉伸的像素.如果将图像宽度放在那里,则不会拉伸图像.

您不必将它放在.m文件中.(您可以使用appDelegate.m文件)只需确保在绘制NavigationBar之前调用它.


Kev*_*Low 0

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

UIBarButtonItem *myBackButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back_button.png"] style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.backBarButtonItem = myBackButton;
[myBackButton release];
Run Code Online (Sandbox Code Playgroud)

您发布的代码之所以如此工作,是因为它仅设置背景,并且文档确实指出:

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