在更改字体后在UITextField上调用sizeToFit在iOS 7.1上无法正常工作

rFl*_*lex 4 objective-c uitextfield ios ios7.1

从iOS 7.1开始,更改字体大小和调用sizeToFit无法按预期工作.文本将不会在正确的位置绘制并将被剪切.当UITextField第一响应者进入时,文本转到正确的位置.呼叫resignFirstResponder会使它再次失败.

在此输入图像描述

有人有解决方法吗?

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITextField *textField = [[UITextField alloc] init];
    textField.text = @"This is a test";
    textField.backgroundColor = [UIColor redColor];
    [textField sizeToFit]; // Calling this will make the second sizeToFit to fail
    textField.font = [textField.font fontWithSize:textField.font.pointSize * 3];
    [textField sizeToFit];
    textField.center = CGPointMake(self.view.frame.size.width / 2.0, self.view.frame.size.height / 2.0);
    textField.delegate = self;

    [self.view addSubview:textField];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

rFl*_*lex 7

我找到了一个解决方法.在调用sizeToFit之前更改文本字符串将使其正常工作:

textField.font = [textField.font fontWithSize:textField.font.pointSize * 3];
NSString *oldText = textField.text;
textField.text = @"";
textField.text = oldText;
[textField sizeToFit];
Run Code Online (Sandbox Code Playgroud)