Внешний вид 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];