Я пытаюсь добавить ярлык на свою панель инструментов. Кнопка работает отлично, но когда я добавляю объект метки, происходит сбой. Любые идеи?
UIBarButtonItem *setDateRangeButton = [[UIBarButtonItem alloc] initWithTitle:@"Set date range"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(setDateRangeClicked:)];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 20, 20)];
label.text = @"test";
[toolbar setItems:[NSArray arrayWithObjects:setDateRangeButton,label, nil]];
// Add the toolbar as a subview to the navigation controller.
[self.navigationController.view addSubview:toolbar];
// Reload the table view
[self.tableView reloadData];
ios
iphone
uibarbuttonitem
user8359
источник
источник
Для тех, кто использует Interface Builder для компоновки вашего
UIToolBar
, это также можно сделать, используя только Interface Builder.Чтобы добавить
UILabel
в объект,UIToolBar
вам нужно добавить общийUIView
объект в свойUIToolBar
IB, перетащив новыйUIView
объект поверх вашегоUIToolBar
.IB
автоматически создастUIBarButtonItem
файл, который будет инициализирован вашим customUIView
. Затем добавьтеUILabel
кUIView
и отредактируйтеUILabel
графическое изображение в соответствии с вашим предпочтительным стилем. Затем вы можете визуально настроить фиксированные и / или переменные распорки по своему желанию, чтобы расположить ихUILabel
соответствующим образом.Вы также должны установить фон как для, так
UILabel
иUIView
для,clearColor
чтобы ониUIToolBar
правильно отображались подUILabel
.источник
Я нашел ответ answerBot очень полезным, но я думаю, что нашел еще более простой способ в Interface Builder:
подключите этот BarButtonItem к свойству в своем классе (это в Swift, но будет очень похоже на Obj-C):
добавьте еще одно свойство для самого ярлыка:
в viewDidLoad добавьте следующий код, чтобы установить свойства вашей метки, и добавьте его как customView вашего BarButtonItem
Чтобы обновить
UILabel
текст:Результат:
Приходится звонить
lastUpdateLabel.sizetoFit()
каждый раз при обновлении текста меткиисточник
UILabel* label = [[UILabel alloc] init]; label.text = @"Hello"; label.font = [UIFont systemFontOfSize:16]; [label sizeToFit]; self.barItem.customView = label;
Одна из вещей, для которых я использую этот трюк, - это создать экземпляр
UIActivityIndicatorView
поверхUIToolBar
, что в противном случае было бы невозможно. Например здесь у меня естьUIToolBar
с 2UIBarButtonItem
, вFlexibleSpaceBarButtonItem
, а затем другойUIBarButtonItem
. Я хочу , чтобы вставитьUIActivityIndicatorView
вUIToolBar
между гибким пространством и кнопками окончательной (правой). Итак,RootViewController
я делаю следующее:источник
подробности
Полный образец
Результат
источник
Подобно Мэтту Р. Я использовал построитель интерфейсов. Но
UIWebView
вместо этого я хотел иметь 1 внутри, чтобы можно было выделить текст жирным шрифтом, а другой - нет (например, почтовое приложение). ТакIBOutlet
html
чтобы иметь прозрачный фон, чтобы панель инструментов просвечивала сквозьКод:
источник
Если вы хотите добавить представление на панель инструментов, вы можете попробовать следующее:
источник
Попробуй это:
Примечание:
self.barItem
этоUIBarButtonItem
добавлено из библиотеки объектов и помещается между двумя гибкими пространствами.другой способ - удалить
[self.barItem setCustom:view]
строку и изменить параметрыlabel
(ширины) так, чтобы она заполняла всю панель инструментов, и самостоятельно установить выравнивание по середине и шрифту в коде,источник