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

我有一个UIViewController子类。 我给view控制器一个rightBarButtonItemviewDidLoad是这样的:

 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Difficulty" style:UIBarButtonItemStylePlain target:nil action:nil]; 

当用户按下视图中的另一个button时, UIBarButtonItem的标题/文本将UIBarButtonItem更改:

 self.navigationItem.rightBarButtonItem.title = @"Mellansvår"; 

它工作正常,但标题改变时,看起来不太好。 文本跳了一下。

我已经在运行时改变了UILabel文本,而当我改变他们的文本是不是看起来像这样,但我不知道如何添加一个UILabelnavigationItem 。 我无法在界面生成器中执行此操作,因为导航栏来自UINavigationController

有没有办法改变标题更顺利?

可以不用再次设置标题,而是可以使用标题再次设置button,然后对其进行设置:

 (void)setRightBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated 

另一个解决scheme是改变没有animation的标题。

 [UIView performWithoutAnimation:^{ self.navigationItem.rightBarButtonItem.title = @"Mellansvår"; }]; 

如果在UIBarButtonItem标题没有附加到navigationItem的情况下更改UIBarButtonItem标题,则可以完全跳过animation,如下所示:

 UIBarButtonItem *tempItem = self.navigationItem.rightBarButtonItem; self.navigationItem.rightBarButtonItem = nil; tempItem.title = @"Mellansvår"; self.navigationItem.rightBarButtonItem = tempItem; 

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