При изменении заголовка UIBarButtonItem переход происходит рывками / мерцаниями
У меня есть UIViewController
подкласс. Я даю контроллеру представления rightBarButtonItem в viewDidLoad
как это:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Difficulty"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
Когда пользователь нажимает другую кнопку в представлении, заголовок / текст UIBarButtonItem
изменяется так:
self.navigationItem.rightBarButtonItem.title = @"Mellansvår";
Это работает нормально, но когда название изменено, это не выглядит очень хорошо. Текст прыгает немного.
я изменился UILabel
текст во время выполнения раньше, и когда я изменяю их текст не выглядит так, но я не знаю, как добавить UILabel
к элементу навигации. Я не могу сделать это в Интерфейсном Разработчике, потому что панель навигации прибывает из UINavigationController
,
Есть ли способ изменить название более плавно?
3 ответа
Вместо того, чтобы снова устанавливать заголовок, вы можете снова установить кнопку с заголовком, а затем анимировать его:
(void)setRightBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated
Другим решением было бы изменить заголовок без анимации.
[UIView performWithoutAnimation:^{
self.navigationItem.rightBarButtonItem.title = @"Mellansvår";
}];
Вы можете вообще пропустить анимацию, если измените заголовок UIBarButtonItem, пока он не присоединен к навигационному элементу, например так:
UIBarButtonItem *tempItem = self.navigationItem.rightBarButtonItem;
self.navigationItem.rightBarButtonItem = nil;
tempItem.title = @"Mellansvår";
self.navigationItem.rightBarButtonItem = tempItem;
Анимация полностью исчезнет, но визуальный эффект выглядит лучше ИМХО.