Я разрабатываю приложение iPhone с последней SDK и XCode 4,2Странного поведения при попытке выровнять вертикально UILabel текст
Я использую этот код для выравнивания по вертикали текста установить его ранее в UILabel. Вот код:
- (void)resizeLabel:(UILabel *)label
{
CGSize maximumLabelSize = label.frame.size;
CGSize expectedLabelSize = [label.text sizeWithFont:label.font
constrainedToSize:maximumLabelSize
lineBreakMode:label.lineBreakMode];
//adjust the label the the new height.
CGRect newFrame = label.frame;
NSLog(@"NumLines: %d, OldWidth: %f, NewWidth: %f, OldHeight: %f, newHeight: %f", label.numberOfLines, maximumLabelSize.width, expectedLabelSize.width, maximumLabelSize.height, expectedLabelSize.height);
newFrame.size.height = expectedLabelSize.height;
label.frame = newFrame;
}
Для текста: "Iglesia-де-ла-Мерсед" я получаю:
NumLines: 2, OldWidth: 205.000000, NewWidth: 153.000000, OldHeight: 39.000000, newHeight: 21.000000
Для текста: "Antiguo Convento-де-лос-merdarios" я получаю
NumLines: 2, OldWidth: 205.000000, NewWidth: 187.000000, OldHeight: 39.000000, newHeight: 42.000000
Оба настроены на использование двух строк, но текст всегда рисуется в одной строке только.
Почему я получаю двойную высоту, когда expectedLabelSize.width
меньше, чем maximumLabelSize.width
?
Да, я создал для двух линий в Interface Builder. – VansFannel
'sizeWithFont: constrainedToSize: lineBreakMode:' не заботится о том, что вы делаете в nib-файлах. он просто вычисляет, что нужно. а для второго текста требуется 2 строки для содержащегося размера (ака максимальный размер). – vikingosegundo
Я обновил свой вопрос, потому что, как вы можете видеть, оба настроены на использование двух строк, но второе - больше. – VansFannel