Ios UIButton setTitle:longerTitle for状态:收缩标题字符串
我正在尝试使用设置UIButton的标题Ios UIButton setTitle:longerTitle for状态:收缩标题字符串,ios,uibutton,autolayout,uikit,Ios,Uibutton,Autolayout,Uikit,我正在尝试使用设置UIButton的标题 [按钮集标题:更改标题用于状态:uicontrol状态正常]标题正在正确更改,但在内部,这似乎是由UIButton设置的动画,当从长标题更改为短标题时,UIButton标签上似乎有一个布局传递,带有基于最终字符串长度的intrinsicContentSize,但在UIButton标签中的文本之前已经改变了。结果是,在设置短标题之前,我可以在ui按钮中看到长标题的瞬间收缩。 例如 开始: loooongtiiitle 在淡入淡出过程中,动画将变为几秒钟:
[按钮集标题:更改标题用于状态:uicontrol状态正常]
标题正在正确更改,但在内部,这似乎是由UIButton设置的动画,当从长标题更改为短标题时,UIButton
标签上似乎有一个布局传递,带有基于最终字符串长度的intrinsicContentSize
,但在UIButton
标签中的文本之前已经改变了。结果是,在设置短标题之前,我可以在ui按钮中看到长标题的瞬间收缩。
例如
开始:
loooongtiiitle
在淡入淡出过程中,动画将变为几秒钟:
Lon…tle
在以下地点着陆前:
Short
我没有在视图上做任何其他动画,并且已经能够在一个新的项目中重新创建这个效果,除了一个带有一个按钮的视图之外,什么都没有
这是UIKit错误还是我做错了什么 如果您添加延迟,使您在点击按钮期间不更改按钮标签,则更容易看到这种现象:
@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;
});
}
我想说,继续,提交一份bug报告。你能发布测试项目吗?谢谢你看@matt,我已经把它放在github上了,也许我只是不敏感,但我没有看到问题所在。我看到点击-淡入-重新出现的新标题,正如人们所期待的。你可以看到它时,在模拟器与缓慢的动画切换。好吧,这是真的!但是生活并不是生活在模拟机中,缓慢的动画切换。谢谢。我知道这是一个相当微妙的错误,不会破坏任何人的一天,但我想我应该把它放在那里,以防我做了什么蠢事。我将提交一份bug报告,但我不会屏住呼吸等待修复。苹果有很多更重要的bug需要首先修复。