首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当更改UIBarButtonItem标题时,过渡过程会变得急促/闪烁

当更改UIBarButtonItem标题时,过渡过程会变得急促/闪烁
EN

Stack Overflow用户
提问于 2014-04-26 07:14:29
回答 3查看 1.7K关注 0票数 12

我有一个UIViewController子类。我在rightBarButtonItem中给视图控制器一个viewDidLoad,如下所示:

代码语言:javascript
复制
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Difficulty"
      style:UIBarButtonItemStylePlain
      target:nil
      action:nil];

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

代码语言:javascript
复制
self.navigationItem.rightBarButtonItem.title = @"Mellansvår";

它工作的很好,但当标题改变,它看起来不太好。这段文字略为跳跃。

我以前在运行时更改过UILabel文本,当我更改它们时,它们的文本不像这样,但是我不知道如何向navigationItem添加一个UILabel。我不能在Interface中这样做,因为导航栏来自UINavigationController

是否有更顺利地更改标题的方法?

EN

回答 3

Stack Overflow用户

发布于 2014-08-01 13:59:25

不需要再次设置标题,您可以使用标题再次设置按钮,然后将其动画化:

代码语言:javascript
复制
(void)setRightBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated
票数 3
EN

Stack Overflow用户

发布于 2016-11-02 19:05:24

另一种解决方案是在没有动画的情况下更改标题。

代码语言:javascript
复制
[UIView performWithoutAnimation:^{
    self.navigationItem.rightBarButtonItem.title = @"Mellansvår";
}];
票数 2
EN

Stack Overflow用户

发布于 2017-04-12 17:52:07

如果在UIBarButtonItem标题未附加到navigationItem时更改它,则可以跳过动画,如下所示:

代码语言:javascript
复制
UIBarButtonItem *tempItem = self.navigationItem.rightBarButtonItem;
self.navigationItem.rightBarButtonItem = nil;
tempItem.title = @"Mellansvår";
self.navigationItem.rightBarButtonItem = tempItem;

动画将完全消失,但视觉效果看起来更好的IMHO。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23307907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档