У нас есть «нижний бар» в нашем приложении, которое на данный момент является лишь UIView
и определяется повсюду, что приводит к несогласованности и т.д. ...UIBarButtonItems с фоновыми изображениями
Я пытаюсь заменить использование этого с UIToolBar
и UIBarButtonItems
, поэтому я могу настроить внешний вид с помощью протокола UIAppearance
.
Кнопки, которые мы используем на панели инструментов, имеют фоновое изображение, выполненное из изменяемого размера изображения (определенного в каталоге активов).
Что мы хотим, чтобы это выглядело как-то вроде этого ...
Кнопки красиво по центру между верхней и нижней части панели инструментов.
Однако то, что происходит, когда я установить фоновое изображение с использованием протокола UIAppearance
это ...
Кнопки вертикально от центра.
Кажется, что текст находится в одном и том же месте, а фон применяется к тексту, но текст на самом деле ниже центра. Без BG это имеет смысл, но с BG это не работает.
Я могу изменить кадр в коде каждой кнопки, но это не идеально, поскольку мы возвращаемся к проблеме несогласованности, которую я пытаюсь решить.
Есть ли способ изменить это для всех экземпляров UIBarButtonItem
в одном месте?
Я даже попытался добавить прозрачность к нижней части изображения, чтобы «подтолкнуть ее вверх», но это не повлияло.
Update, чтобы показать проблему на месте
В ENW проекте я встроить контроллер представления в навигации Controlle рэнд использовать этот код ...
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.navigationController setToolbarHidden:NO animated:animated];
}
- (NSArray *)toolbarItems
{
return @[
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil],
[[UIBarButtonItem alloc] initWithTitle:@"Hello" style:UIBarButtonItemStyleDone target:nil action:nil],
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil],
[[UIBarButtonItem alloc] initWithTitle:@"World!" style:UIBarButtonItemStyleDone target:nil action:nil],
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
[[UIBarButtonItem alloc] initWithTitle:@"Goodbye!" style:UIBarButtonItemStyleDone target:nil action:nil],
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]
];
}
В результате ...
Затем я использую UIAppearance
код ...
[[UIToolbar appearance] setTintColor:[UIColor whiteColor]];
[[UIToolbar appearance] setBarTintColor:[UIColor colorWithRed:0.15 green:0.2 blue:0.85 alpha:1.0]];
И результат ...
Это выглядит нормально, но когда я добавить фоновое изображение ...
С кодом ...
[[UIBarButtonItem appearance] setBackgroundImage:[UIImage imageNamed:@"ToolBarButtonBackgroundEnabled"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Я вижу thi s ...
Я попытался изменить настройку название позиции ...
[[UIBarButtonItem appearance] setTitlePositionAdjustment:UIOffsetMake(0, -5) forBarMetrics:UIBarMetricsDefault];
Но это только перемещает текст внутри кнопки ...
Это Безразлично» t переместите фон кнопки.
Я ничего не могу найти относительно смещения кнопок в виде панели инструментов.
Перемещение текста
Я был неправ о тексте остающейся междунар он же место. Текст перемещается при добавлении фона к элементам панели кнопок ...
Я слился скриншоты панели инструментов с и без кнопок фона. Вы можете видеть, что текст перемещается вниз.
Я пробовал это, используя протокол UIAppearance, и он разбил приложение. – Fogmeister