Я использую следующий метод для получения высоты надписи, необходимой для указанного текста.
//Obtain the label height required for the text
CGFloat answerLabelHeight = [CustomCell getHeightOfLabel:answer_text ofFontSize:ANSWER_FONT_SIZE withConstraint: ANSWER_CONSTRAINT];
//Retrieve the label from cell contentview
UILabel *thisAnswerLabel = (UILabel*)[self.contentView viewWithTag:ANSWERLABEL_TAG];
//Set the frame of the label depending on the label height obtained above
[thisAnswerLabel setFrame:CGRectMake(CELL_TEXT_LEFT_MARGIN + CELL_AVATAR_WIDTH + CELL_SPACING, currentYAxisValue, CELL_ANSWER_WIDTH, answerLabelHeight)];
//Method to obtain label height
+ (CGFloat) getHeightOfLabel:(NSString *)text ofFontSize:(CGFloat)fontSize withConstraint:(CGSize)constraint
{
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:fontSize] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
return size.height;
}
Странно, но я замечаю, что бывают случаи, когда высота возвращаемой метки не точна, то есть все еще есть пробелы над и под текстом (см. Ниже). Кроме того, результаты, возвращаемые для устройства iPhone 4 и симулятора, отличаются
Результат на симуляторе: (Результат точный, т. Е. Никаких дополнительных отступов над и под текстом
Результат на iPhone 4: (Результат отличается и немного отличается, то есть дополнительные отступы видны над и под текстом
Может кто-нибудь посоветовать мне
1) Почему разница в результатах между устройством iphone и симулятором
2) Как удалить дополнительные отступы для сценария iphone 4?
EDIT:
Обратите внимание, что дополнительное заполнение происходит только для определенных сценариев, похоже, когда последнее слово абзаца близко к правой стороне границы. В противном случае высота возвращается в порядке. если это связано с дисплеем сетчатки iphone, как я могу преодолеть это несоответствие?