У меня есть метка для расчета размера. Просто установите текст метки, затем установите размер метки и сдвиньте UITextField до самого края метки. Если в тексте метки есть пробел, он выглядит великолепно.
Примерно так:
UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 550.0, 28.0)];
[nameLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:24.0]];
[nameLabel setText:@"Name: "];
[nameLabel sizeToFit];
[self addSubview:nameLabel];
[nameLabel release];
UITextField *nameTextField = [[UITextField alloc] initWithFrame:CGRectMake(nameLabel.frame.size.width + nameLabel.frame.origin.x, 0.0, 550.0 - nameLabel.frame.size.width, nameLabel.frame.size.height)];
Изменить, чтобы ответить на комментарий об особых случаях: В особых случаях, таких как очень длинные метки, вам придется добавить дополнительный код. Например, вы можете проверить ширину после вызова sizeToFit
и, если она превышает определенную ширину, перестроить метку с несколькими строками, меньшим шрифтом и т. Д. К сожалению, если вам необходимо учитывать особые случаи, вам придется выполнять дополнительную работу по кодированию.