0

我有一个要显示的框列表。每个框都有一个填充和 3 个文本元素。这些元素可以有不同的大小。我试图让它们始终具有相同的填充和它们周围的空间,但我无法调整它们,因为我不知道如何计算每个结果的大小。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|    (10px padding all over the box)                      |
|                                                         |
|      +-------------------------------------------+      |
|      |  a box with a text                        |      | 
|      +-------------------------------------------+      |
|              (between boxes the same space)             |
|      +-------------------------------------------+      |
|      |  a box with a text                        |      | 
|      +-------------------------------------------+      |
|                                                         |
|      +-------------------------------------------+      |
|      |  a box with a text                        |      | 
|      +-------------------------------------------+      |
|                                                         |
|                                                         |
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

我的意思是,在 HTML 中,它将是一个单元格填充为 10 像素的简单表格。

这在 iPhone 中可能吗?一些开发人员告诉我不能这样做,这是因为解决方案是定义文本占用(例如)仅一行,并且文本必须以“...”结尾

4

1 回答 1

0

嗨,如果你知道以下事情

  • 最大宽度
  • 要测试的字符串
  • 字体大小

您可以使用以下方法计算标签所需的高度,即使是多个换行符

+  (CGSize) calculateLabelHeightWith:(CGFloat)width text:(NSString*)textString
{
    CGSize maximumSize = CGSizeMake(width, 9999);
    CGSize size = [textString sizeWithFont:[UIFont fontWithName:@"Helvetica" size:24]
                         constrainedToSize:maximumSize 
                             lineBreakMode:UILineBreakModeWordWrap];
    return size;
}

iOS 7 更新

CGRect textRect = [text boundingRectWithSize:<text Feild Size>
                                 options:NSStringDrawingUsesLineFragmentOrigin
                              attributes:@{NSFontAttributeName:[UIFont stuff here]}
                                 context:nil];

CGSize size = textRect.size;

所以你会得到每个标签的高度,然后用它来得到总高度+10px 填充

于 2013-11-07T08:55:41.033 回答