2010-08-23 5 views
1

Я корректирую свои старые приложения на iPhone 4 с помощью симулятора на данный момент, и я могу очень странно поведением с рисунком и размером UILabelWithFont: constrainedToSize: что я сейчас вижу только на симуляторе iPhone 4 ,UILabel неправильные расчеты размера на iPhone

Я пытаюсь показать следующий текст сообщения об ошибке для пользователя: @ «Неверное имя пользователя или пароль» Этот текст находится внутри динамической коробке ошибки, которая построена из трех частей: верхней, центральной и нижней части и, следовательно, I вычислите размер метки, чтобы я мог соответствующим образом изменить центр фонового изображения.

Вот пример кода расчета размера UILabel:

CGRect errorFrame = CGRectMake(40, 0, 240.0, 22.0); 
UILabel *errorlabel = [[UILabel alloc] initWithFrame:errorFrame]; 
errorlabel.adjustsFontSizeToFitWidth = NO; 
errorlabel.font = [UIFont fontWithName:@"HelveticaNeue" size:16]; 
errorlabel.textAlignment = UITextAlignmentLeft; 
errorlabel.numberOfLines = 0; 
errorlabel.text = @"Incorrect user name or password"; 
// since only the width is fixed I will use a really large height value 
CGSize errorLabelSize = [errorlabel.text sizeWithFont:errorlabel.font constrainedToSize:CGSizeMake(240.0, 4600.0)]; 
CGRect newFrame = errorlabel.frame; 
newFrame.size.height = errorLabelSize.height; 
errorlabel.frame = newFrame; 
    // added so I can easily see the new frame 
errorlabel.backgroundColor = [UIColor redColor]; 
[self.errorView addSubview:errorlabel]; 
[errorlabel release]; 

Когда я запускаю код на iPhone 3 тренажере sizeWithFont: constrainedToSize: метод возвращает высоту 1 линии и черпает этот текст ошибки на 1 строка. Когда я запускаю тот же код на симуляторе iPhone 4WithFont: constrainedToSize: возвращает размер (170.0, 42.0), который необходим для двух строк, но сам ярлык нарисован на 1 строке. Как будто код sizeWithFont не использует те же логики кода рендеринга.

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

Заранее спасибо

ответ

0

У меня эта же проблема, с тем же шрифтом. Я не нашел способ предсказать, когда это произойдет, и, похоже, оно не будет больше, чем ровно одна строка. Это происходит на устройстве точно так же, как на симуляторе. Это происходит во всех iOS 4.0, 4.0.1 и 4.0.2. Пока я еще не проверял симулятор 4.1.

В конце концов я работал вокруг, вручную отметив места, где это произошло, и вычитал одну строчку в этих местах. Когда мы перейдем к 4.1, мы проверим, сохранилось ли это поведение.

0

Я заметил эту проблему. Также было замечено, что при использовании iPhone 4 пустое пространство, которое входит в строку текста, вычисляется как 4 пикселя в ширину, но если вы вычисляете ширину пробела отдельно, оно вычисляется как ширина 5pts .... (используя ArialMT, 14pt)

0

После подачи этой ошибке в Apple, около года назад я получил письмо от них говорили, что вопрос должен быть решен на iOS5 бета 1

+0

не появляется, чтобы решить для меня все равно – glogic

Смежные вопросы