我的应用程序有一个文本字段,当它成为第一响应者时会缩小宽度以显示“取消”按钮,并在文本字段重新占用第一个响应者时向后展开。这一切都是通过autolayout完成的:我在文本字段上有一个“superview space to superview”约束。为了扩展它,我只是减少这个常量,使它与取消按钮重叠(其中我的alpha同时淡出)。为了将其折回,我再次增加常数。很标准的东西。问题是,当字段开始动画时,文本会在宽度上扭曲,然后在文本字段收缩时将其设置回正常比例。这是一种非常奇怪和不良的影响。有没有人经历过这个,你对如何防止它有任何见解吗?谢谢!
答案 0 :(得分:2)
我遇到了同样的问题,几年前我发现了这个问题:Strange behavior when animating UITextField
它的解决方案对我有用。我最初试图在以下委托方法中为UITextField的宽度设置动画:
- (void)textFieldDidBeginEditing:(UITextField *)textField;
- (void)textFieldDidEndEditing:(UITextField *)textField;
这导致您看到的文字失真。为了解决这个问题,我将动画移动到这两个委托方法:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;
现在文字没有延伸。
答案 1 :(得分:0)
也许您可以尝试显式设置UITextField的字体大小,如下所示:
[textField setFont:[UIFont systemFontOfSize:value]];
并将adjustsFontSizeToFitWidth设置为NO或false
textField.adjustsFontSizeToFitWidth = YES;