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