我有一个UIViewController子类。我在rightBarButtonItem中给视图控制器一个viewDidLoad,如下所示:
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Difficulty"
style:UIBarButtonItemStylePlain
target:nil
action:nil];当用户按下视图中的另一个按钮时,UIBarButtonItem的标题/文本将被更改如下:
self.navigationItem.rightBarButtonItem.title = @"Mellansvår";它工作的很好,但当标题改变,它看起来不太好。这段文字略为跳跃。
我以前在运行时更改过UILabel文本,当我更改它们时,它们的文本不像这样,但是我不知道如何向navigationItem添加一个UILabel。我不能在Interface中这样做,因为导航栏来自UINavigationController。
是否有更顺利地更改标题的方法?
发布于 2014-08-01 13:59:25
不需要再次设置标题,您可以使用标题再次设置按钮,然后将其动画化:
(void)setRightBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated发布于 2016-11-02 19:05:24
另一种解决方案是在没有动画的情况下更改标题。
[UIView performWithoutAnimation:^{
self.navigationItem.rightBarButtonItem.title = @"Mellansvår";
}];发布于 2017-04-12 17:52:07
如果在UIBarButtonItem标题未附加到navigationItem时更改它,则可以跳过动画,如下所示:
UIBarButtonItem *tempItem = self.navigationItem.rightBarButtonItem;
self.navigationItem.rightBarButtonItem = nil;
tempItem.title = @"Mellansvår";
self.navigationItem.rightBarButtonItem = tempItem;动画将完全消失,但视觉效果看起来更好的IMHO。
https://stackoverflow.com/questions/23307907
复制相似问题