UIBarButtonItem внешний вид и setBackButtonBackgroundImage - PullRequest
14 голосов
/ 12 января 2012

Я меняю кнопку «Назад», когда нажимаю новый контроллер вида в моем навигационном контроллере.Но это не выглядит красиво и растянуто.Кроме того, как я могу удалить заголовок "Новости" в моей кнопке "Назад"?вот мой кодсм. изображение

screen shoot

и код:

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

Я хочу добиться чего-то подобного http://i228.photobucket.com/albums/ee262/romano2717/photo4.png

Ответы [ 5 ]

18 голосов
/ 21 января 2012

Используйте следующий код, чтобы поместить изображение в нужное положение.

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.

0 голосов
/ 05 августа 2013

Использовать youparentViewController.title = @ "";У меня была такая же проблема с заголовком

0 голосов
/ 12 января 2012

Вы можете создать пользовательскую кнопку и добавить ее в качестве кнопки панели, чтобы удалить растяжку. или вы можете получить графику размера кнопки назад.

чтобы удалить заголовок кнопки, вы должны установить self.title = ""; в методе viewWillDisappear и снова установить заголовок в методе viewWillAppear.

надеюсь, что это решит вашу проблему.

0 голосов
/ 12 января 2012

Код ниже удалит название из кнопки "Назад".

UIBarButtonItem *theBackButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:@selector(yourAction)];
    [[UIBarButtonItem appearance] setBackBarButtonItem:theBackButton];    
    [theBackButton release];
0 голосов
/ 12 января 2012

Если я что-то упустил, вам нужно создать UIBarButtonItem в коде, чтобы удалить или изменить заголовок, поэтому он будет применяться только к контроллерам представления, в которые вы вставили код:

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

причина, по которой код, который вы опубликовали, работает таким образом, заключается в том, что он устанавливает только фон, а документация гласит:

Для получения хороших результатов backgroundImage должно быть растягиваемым изображением.

...