Вот что вам нужно сделать, чтобы легко создать пользовательскую кнопку «Назад», которая повторяет внешний вид кнопки «Назад» по умолчанию на iPhone и iPad, с явным кодом, написанным потому, что, я думаю, я приду сюда, чтобы найти это снова в какой-то момент ,
Поместите следующие функции где-нибудь в файле реализации (.m) соответствующего UIViewController с UINavigationController, а затем в viewDidLoad запустите [self setupBackButton];
Что бы вы не хотели делать с кнопкой «Назад», включите функцию backButtonPressed
.
- (void)setupBackButton {
UIImage *leftArrowImage;
UIImage *pressedLeftArrowImage;
UIButton *customBackButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 48, 30)];
[customBackButton setAutoresizingMask:UIViewAutoresizingNone];
customBackButton.titleLabel.font=[UIFont boldSystemFontOfSize:12];
[customBackButton setTitle:@"Back" forState:UIControlStateNormal];
[customBackButton setTitleColor:[UIColor lightGrayColor] forState:UIControlStateDisabled];
[customBackButton setTitleEdgeInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
leftArrowImage = [UIImage imageNamed:@"UINavigationBarSilverBack.png"];
pressedLeftArrowImage = [UIImage imageNamed:@"UINavigationBarSilverBackPressed.png"];
}
else {
leftArrowImage = [UIImage imageNamed:@"UINavigationBarDefaultBack.png"];
pressedLeftArrowImage = [UIImage imageNamed:@"UINavigationBarDefaultBackPressed.png"];
}
UIImage *stretchableLeftArrowImage = [leftArrowImage stretchableImageWithLeftCapWidth:15.0 topCapHeight:0];
UIImage *stretchablePressedLeftArrowImage = [pressedLeftArrowImage stretchableImageWithLeftCapWidth:15.0 topCapHeight:0];
[customBackButton setBackgroundColor:[UIColor clearColor]];
[customBackButton setBackgroundImage:stretchableLeftArrowImage forState:UIControlStateNormal];
[customBackButton setBackgroundImage:stretchablePressedLeftArrowImage forState:UIControlStateHighlighted];
[customBackButton addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *aCustomBackButtonItem = [[UIBarButtonItem alloc] initWithCustomView:customBackButton];
[[self navigationItem] setLeftBarButtonItem:aCustomBackButtonItem];
}
- (void)backButtonPressed:(id)sender {
NSLog(@"back button pressed");
}
Чтобы получить точные кнопки pngs от iOS, я рекомендую UIKit Artwork Extractor . После запуска проекта и сохранения изображений на симуляторе iPad Retina, а затем на симуляторе iPad без ретина, найдите заголовки в папке «Common» в папке симулятора, которая появится на рабочем столе. Имена файлов «UINavigationBar ... Back (@ 2x) .png» и «UINavigationBar ... BackPressed (@ 2x) .png» - это то, что вам нужно.
Я также прикрепляю стандартную кнопку задней панели iOS (iPhone и iPad) pngs , использованную в приведенном выше коде, для удобства. Обратите внимание, что с обновлениями iOS внешний вид задних barbuttonitems по умолчанию может измениться ...