iPhone:将盒子调整到里面的内容

时间:2013-11-07 07:51:06

标签: iphone layout

我有一个要显示的框列表。 每个框都有一个填充和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中,它将是一个带有10px单元格填充的简单表。

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

1 个答案:

答案 0 :(得分: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填充