我正在使用以下方法获取指定文本所需的标签高度。
//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场景的多余padding?
编辑: 请注意,额外填充仅在某些情况下发生,似乎是当段落的最后一个单词靠近边框右侧时。否则返回的高度就可以了。如果这是由于 iphone 的视网膜显示,我该如何克服这种不一致?
最佳答案
@Zhen 我猜你没有使用 ratina 显示模拟器,而 iPhone 4 有 ratina 显示。
您可以通过降低其高度并将对齐方式设置为居中来移除多余的内边距。
关于objective-c - iPhone 4.0 与模拟器中显示的标签高度差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7440063/