根据UITableViewCell iOS内的内容调整UILabel大小

时间:2015-06-29 02:05:51

标签: ios objective-c swift uitableview

我使用的UITableViewCell包含少量ImageViewLabels。我已经给出了细胞如何寻找参考的图像。我需要Content标签根据其中的文本进行扩展和收缩,而不会干扰单元格内的任何其他视图。我是AutoLayouts的新手,我正面临着它的问题。请帮忙。

The layout of the UITableViewCell

1 个答案:

答案 0 :(得分:1)

您需要在故事板中添加NSLayoutConstraint,然后将其连接到代码中的属性。这是我用宽度做的一个例子,但你可以用高度做同样的事。

enter image description here

.h文件中的引用插座是:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *constraintAuctionHouseNameWidth;

然后在.m控制器文件中,我找出新标签的大小,并将约束设置为,如下所示。

然后,您需要确定标签中文本的大小,这将决定标签的大小以显示它。以下是我的工作方式:(auctionHouseObject.name是进入标签)

//calculate width of label
CGRect r = [auctionHouseObject.name boundingRectWithSize:CGSizeMake(350, 0)
                options:NSStringDrawingUsesLineFragmentOrigin
                attributes:@{NSFontAttributeName:[UIFont fontWithName:@"Montserrat-Bold" size:15]}
                context:nil];

然后我以编程方式设置宽度。 (auctionHouseNameLabelMaxWidth根据手机的屏幕宽度而有所不同)

    if(r.size.width < auctionHouseNameLabelMaxWidth){
        cell.constraintAuctionHouseNameWidth.constant = r.size.width + 2;
    }
    else{
        cell.constraintAuctionHouseNameWidth.constant = auctionHouseNameLabelMaxWidth;
    }

在故事板中设置其他约束,Autolayout应该处理其余的事情。