更改UIBarButtonItem标题时,转换是生涩/闪烁

时间:2014-04-26 07:14:29

标签: ios uibarbuttonitem

我有一个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

有没有办法更顺畅地更改标题?

3 个答案:

答案 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;

动画将完全消失,但视觉效果看起来更好恕我直言。