UINavigationBar后退按钮没有文字和固定大小

时间:2013-02-22 15:47:55

标签: ios uinavigationcontroller uinavigationbar uinavigationitem

我有一个自定义的png我设置为UINavigationBar的后退按钮,如下所示:

UIImage *navBackgroundPortait = [[UIImage imageNamed:@"nav_bg_portrait.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:navBackgroundPortait forBarMetrics:UIBarMetricsDefault];

在viewDidLoad方法的视图控制器中,我使用此hack显示没有标题/文本的后退按钮:

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil];

但是我的后退按钮png在宽度上拉伸,我真的希望它根本不这样做。我只是想在所有视图上显示一个静态png图像作为我的后退按钮,上面没有任何文字,并且永远不会拉伸它。我可以这样做,我该怎么做?

最好的问候 索伦

2 个答案:

答案 0 :(得分:6)

使用此:

UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
[backButton setImage:[UIImage imageNamed:@"nav_bg_portrait.png"] forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(popNavigationControllerFunction) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

答案 1 :(得分:0)

因为您通过 resizableImageWithCapInsets:告诉图像延伸 如果要按原样显示图像,只需执行以下操作:

UIImage *navBackgroundPortait = [UIImage imageNamed:@"nav_bg_portrait.png"];