将三个UILabel排列在一起,每个标签可以是多行的

时间:2013-11-07 13:44:09

标签: ios iphone objective-c uilabel autolayout

我正在开展一个项目,我需要将3 UILabels排在一起。让我用一个例子解释一下。

我有以下句子。 "Tim Moore commented on the little bear story" 现在我的三个UILabels将包含:

LABEL 1 --> Tim Moore
LABEL 2 --> commented on
LABEL 3 --> the little bear story

另一个例子:

Dave Smits likes the status "We and only we can me a knew future and only we nobody else can make changes, so don't stop now !"

LABEL 1 --> Dave Smits
LABEL 2 --> likes the status
LABEL 3 --> "We and only we can me a knew future and only we nobody else can make changes, so don't stop now !"

就像你在第二个例子中看到的那样,句子要长得多。

现在我的问题是如何将这三个UILabels排成一行,以便我得到一个好句子。我将其分成三个UILabels的原因是因为我需要在每个UITapgestures上设置UILabel

我在使用UITableviewCell的自定义autolayout内工作。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

制作单元格的自定义布局,并使用自定义单元格内的约束排列UILabel。由于您处于自定义布局中,因此约束应该可以解决问题。

答案 1 :(得分:0)

您可以使用该段代码来排列标签。设置numberOfLines:0让它们成为多行。

-(void)adjustLabels
{
    [self.label1 setText:@"Dave Smits"];
    [self.label2 setText:@"likes the status"];
    [self.label3 setText:@"We and only we can me a knew future and only we nobody else can make changes, so don't stop now !"];

    [self.label1 setNumberOfLines:0];
    [self.label1 sizeToFit];
    CGRect frameFor2 = self.label2.frame;
    frameFor2.origin.x = self.label1.frame.origin.x + 3.f; //add some space between labels
    [self.label2 setFrame:frameFor2];

    [self.label2 setNumberOfLines:0];
    [self.label2 sizeToFit];
    CGRect frameFor3 = self.label3.frame;
    frameFor3.origin.x = self.label2.frame.origin.x + 3.f;
    [self.label3 setFrame:frameFor3];

    [self.label3 setNumberOfLines:0];
    [self.label3 sizeToFit];
}

sizeToFit方法不适用于自动布局,您可以查看另一个answer from SO来修复它。