3

所以我正在使用 iOS 6 制作一个应用程序,并且想知道为什么我以前在 iOS 5 上运行良好的代码现在不再工作了。我有一个带有动态 UILabel 的单元格,它会根据它携带的文本进行调整。

这是在打开自动布局的情况下:

在此处输入图像描述

这是关闭自动布局的情况:

在此处输入图像描述

这是我的代码:

- (CGFloat)heightForText:(NSString *)bodyText
{

#define FONT_SIZE 13.0f
#define CELL_CONTENT_WIDTH 280.0f
#define CELL_CONTENT_MARGIN 5.0f

    CGSize constraintSize = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
    CGSize labelSize = [bodyText sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
    CGFloat height = MAX(labelSize.height, 36.0f);
    //   NSLog(@"height=%f", height);
    return height + (CELL_CONTENT_MARGIN * 2);

}



- (CGFloat)tableView:(UITableView *)tv heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    NSInteger section = [indexPath section];

    switch (section) {


        case 0:
            if ([self.text.text length]!=0)
            {
                return [self heightForText:self.text.text];
            }
            else if ([self.link.text length]!=0)
            {

               return 60.0f;

            }
}
4

1 回答 1

2

您显示的代码很好,问题很可能在您单元格内标签上的限制(您没有显示)内。

您的标签需要具有约束以使其与其父视图的每个边缘保持固定距离。这可能已经是这种情况了——如果是这样,现在的问题是标签不知道如何换行——您还需要preferredMaxLayoutWidth在标签上设置 。

我发现 DCIntrospect 等工具在调试 Autolayout 问题时非常有用。例如,在这种情况下,很难判断这是不是没有环绕文本的正确大小的标签,还是标签不够高而无法正确显示您的内容。

于 2013-02-17T21:31:26.880 回答