objective-c - iPhone 4.0 与模拟器中显示的标签高度差异

标签 objective-c ios height ios-simulator uilabel

我正在使用以下方法获取指定文本所需的标签高度。

//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设备和模拟器返回的结果是不一样的

模拟器上的结果:(结果是准确的,即文本上方和下方没有额外的填充

enter image description here

iPhone 4 上的结果:(结果不同且略有偏差,即在文本上方和下方可以看到额外的填充

enter image description here

谁能给我建议 1)为什么iphone设备和模拟器的结果有差异 2) 如何去掉iphone 4场景的多余padding?

编辑: 请注意,额外填充仅在某些情况下发生,似乎是当段落的最后一个单词靠近边框右侧时。否则返回的高度就可以了。如果这是由于 iphone 的视网膜显示,我该如何克服这种不一致?

最佳答案

@Zhen 我猜你没有使用 ratina 显示模拟器,而 iPhone 4 有 ratina 显示。

您可以通过降低其高度并将对齐方式设置为居中来移除多余的内边距。

关于objective-c - iPhone 4.0 与模拟器中显示的标签高度差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7440063/

相关文章:

objective-c - 如何设置 OSX 屏幕保护程序配置表?

IE/Chrome 中的 jQuery/CSS 高度问题

ios - 项目等级的正确用途是什么?

ios - Xcode:从父项目继承 `configuration` s - 不可能吗?

objective-c - 转换或导出音频文件

ios - iOS 7 iPhone 的启动图像

ios - UIColor patternImage 与 UIActivityViewController barTintColor 冲突

ios - UITextField 最大输入 View 高度

css - 如何设置一个div的最小高度来调整它的内容

ios - UITableView从UISearchBar更新结果