У меня есть UIBarButtonItem на панели навигации. Я хотел бы сделать это стрелкой сформированный. Этим я подразумеваю, что хочу, чтобы это было квадратным за исключением заостренной стороны. Кто-либо знает, как сделать это?
Спасибо!
Я боролся с несколькими подходами по этому поводу и, наконец, понял его, используя все ответы из нескольких источников. Есть пара уловок; этот фрагмент покажет все это (я создавал собственный rightNavButton
, но вы можете легко адаптировать его для любого UIBarButtonItem
):
// Produces a nice "right arrow" style button that mirrors the back arrow
// automatically added by the navController
//
UIImage *buttonImage = [UIImage imageNamed:@"forwardButton.png"];
UIButton *forwardButton = [UIButton buttonWithType:UIButtonTypeCustom];
[forwardButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
[forwardButton setTitle:@"Meter" forState:UIControlStateNormal];
forwardButton.font = [UIFont boldSystemFontOfSize:12];
forwardButton.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);
[forwardButton addTarget:self action:@selector(showMeter)
forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]
initWithCustomView:forwardButton];
Примечание: оказывается, что если вы попытаетесь установите цель и действие непосредственно для элемента кнопки после назначения пользовательского представления с помощью UIButton
, которого он не будет выполнять - вы должны установить цель и действие для самой кнопки - очевидно, navBar
использует дословно предоставленную кнопку.
Это изображение, которое я использовал на непрозрачном черном navBar
(очевидно, вы можете использовать что угодно): http://raretiger.com/images/forwardbutton.png
Создайте собственный фон. См. Создание кнопки со стрелкой влево (например, стиля «назад» UINavigationBar) на UIToolbar , чтобы узнать, как это сделать.
Вы можете -pushNavigationItem: animated:
, чтобы отображалась встроенная кнопка возврата, хотя вы не можете назначать ей настраиваемые действия.
Для недокументированных методов вы можете использовать
UIButton* backButton = [UIButton buttonWithType:101];
для создания «кнопки возврата».
Вы можете создать UIImageView или UIButton с требуемым изображением, а затем использовать:
[[UIBarButtonItem alloc] initWithCustomView: arrowButton];
Надеюсь, это поможет.