Внешний вид UIBarButtonItem и setBackButtonBackgroundImage

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

screen shoot

и код

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

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

Ответы

Ответ 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.

Ответ 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

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

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

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

Ответ 4

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

Ответ 5

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

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