Размер метки изменяется после установки в зависимости от строки - PullRequest
0 голосов
/ 24 мая 2011

У меня проблема с получением правильного кадра для двух разных строк.Я запускаю две строки через следующий код:

UILabel *myLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
myLabel.lineBreakMode = UILineBreakModeWordWrap;
myLabel.numberOfLines = 2;
myLabel.textAlignment = UITextAlignmentCenter;
myLabel.font = [UIFont boldSystemFontOfSize:11];
myLabel.text = @"About Stores"
myLabel.text = @"About Rivers"

CGSize myLabelSize = CGSizeMake(70,28);
[myLabel sizeWithFont:myString.font     // <-- One of two strings
    constrainedToSize:aLabelSize 
        lineBreakMode:UILineBreakModeWordWrap];

Результат для myString1 => Ширина: 70, Высота: 28
Результат для myString2 => Ширина: 70, Высота: 14

Почему здесь есть разница?

Ответы [ 3 ]

0 голосов
/ 24 мая 2011

просто замените код и попробуйте ..... я не знаю, работает ли он, просто проверьте:)

[myLabel sizeWithFont:[UIFont fontWithName:@"Helvetica-Bold" size:11]     
constrainedToSize:myLabelSize  lineBreakMode:UILineBreakModeWordWrap];

а также ";" отсутствует в ярлыке`

myLabel.text = @ "О магазинах"; myLabel.text = @ "About Rivers"; `

С уважением ..

0 голосов
/ 24 мая 2011

Есть разница, потому что системный шрифт - Helvetica, который является шрифтом переменного размера.Текст в myString1 изначально шире, чем текст в myString2, поэтому строка должна переноситься на вторую строку, чтобы соответствовать.Так как вы указали 2 строки max и UILineBreakModeWordWrap, это то, что вы получите.Если вы хотите, чтобы он умещался в одну строку, сделайте myLabelSize немного шире или используйте меньший размер шрифта.

0 голосов
/ 24 мая 2011

Проблемы, которые я вижу:

1

NSString не имеет свойства шрифта.Возможно, вы захотите заменить «myString.font» на UILabel.font, где UILabel будет заменен экземпляром UILabel, который вы планируете использовать для отображения строки.

2

sizeWithFont isдолжен вернуть CGSize, который вы храните в экземпляре CGSize.

Похоже, вы не очень понимаете, как его использовать.Я отправил ответ о том, как правильно использовать sizeWithFont.Вы должны проверить это здесь: Поместите два UILabels рядом слева и справа, не зная длины строки текста в левой метке

Кстати, именно поэтому вы видите разницу в высотах... Я думаю, что в качестве аргумента размера шрифта передается значение мусора.Если вы жестко закодируете аргумент размера шрифта, вы увидите согласованные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...