Ios 更改UIBarButtonItem标题时,过渡会突然/闪烁
我有一个Ios 更改UIBarButtonItem标题时,过渡会突然/闪烁,ios,uibarbuttonitem,Ios,Uibarbuttonitem,我有一个UIViewController子类。我在viewDidLoad中给视图控制器一个rightbuttonItem,如下所示: self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Difficulty" style:UIBarButtonItemStylePlain target:nil action:nil]; self.navigatio
UIViewController
子类。我在viewDidLoad
中给视图控制器一个rightbuttonItem,如下所示:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Difficulty"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
self.navigationItem.rightBarButtonItem.title = @"Mellansvår";
UIBarButtonItem *tempItem = self.navigationItem.rightBarButtonItem;
self.navigationItem.rightBarButtonItem = nil;
tempItem.title = @"Mellansvår";
self.navigationItem.rightBarButtonItem = tempItem;
当用户按下视图中的另一个按钮时,UIBarButtonItem
的标题/文本如下所示:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Difficulty"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
self.navigationItem.rightBarButtonItem.title = @"Mellansvår";
UIBarButtonItem *tempItem = self.navigationItem.rightBarButtonItem;
self.navigationItem.rightBarButtonItem = nil;
tempItem.title = @"Mellansvår";
self.navigationItem.rightBarButtonItem = tempItem;
它工作得很好,但是当标题改变时,它看起来不太好。文本有点跳跃
我以前在运行时更改过UILabel
文本,当我更改它们的文本时,它们看起来不像这样,但我不知道如何向导航项添加UILabel
。我无法在Interface Builder中执行此操作,因为导航栏来自UINavigationController
有没有办法更顺利地更改标题?您可以使用标题再次设置按钮,然后设置动画,而不是再次设置标题:
(void)setRightBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated
另一个解决方案是在没有动画的情况下更改标题
[UIView performWithoutAnimation:^{
self.navigationItem.rightBarButtonItem.title = @"Mellansvår";
}];
如果在UIBarButtonim标题未附加到navigationItem时更改它,则可以完全跳过该动画,如下所示:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Difficulty"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
self.navigationItem.rightBarButtonItem.title = @"Mellansvår";
UIBarButtonItem *tempItem = self.navigationItem.rightBarButtonItem;
self.navigationItem.rightBarButtonItem = nil;
tempItem.title = @"Mellansvår";
self.navigationItem.rightBarButtonItem = tempItem;
动画将完全消失,但视觉效果看起来更好