UIButton setTitle:longerTitle forState:收缩标题字符串

时间:2015-08-18 16:25:53

标签: ios uibutton autolayout uikit

我正在尝试使用UIButton设置标题 [button setTitle:changedTitle forState:UIControlStateNormal]标题正在正确更改,但内部显示为UIButton动画,当从长标题更改为短标题时,UIButton标签上似乎有{{1}的布局传递}基于最终字符串长度但在intrinsicContentSize标签中的文本已更改之前。结果是我可以在设置短标题之前看到UIButton中长标题的瞬间收缩。 例如

开始:

UIButton

在淡入淡出动画期间变得不到一秒钟:

LooooongTiiiiiiitle

降落前:

Lon...tle

我没有在视图上做任何其他动画,并且能够在新项目中重新创建此效果,只有一个UIButton的视图。

这是一个UIKit错误还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

这种现象实际上更容易看看你是否添加延迟,以便在点击按钮时不更改按钮标签:

@interface ViewController ()
@property (nonatomic,assign) BOOL longString;
@end

@implementation ViewController

- (IBAction)changeLabel:(UIButton *)sender {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSString *text = self.longString ? @"aaaaaaaaaaaaaaaa": @"bbbbb";
        [sender setTitle:text forState:UIControlStateNormal];
        self.longString = !self.longString;
    });
}

我会说继续并提交错误报告。