推动下方标签的动态UILabels - iOS

时间:2013-06-23 15:41:07

标签: iphone ios objective-c xcode uilabel

我正在尝试构建一个tableView,每个单元格都由imageView和标签构建。 当其中一个标签超过一个句子,结果是,该标签被写在下面的标签上时,会出现问题。当我给标签更高的高度时,标签不会从我想要的地方开始。带有一个句子的标签从标签之间的间隙开始......

enter image description here enter image description here

答案:

只需确保取消autoLayout即可。在我的情况下,我不需要它......

                titleLabel.text = @"Bla bla bla bla bla bla bla bla bla bla";
                [titleLabel sizeToFit];

                [abstractLabel setText:@"bla bla bla bla bla bla bla bla"];
                CGRect abstractFrame = titleLabel.frame;
                abstractFrame.origin.y = titleLabel.frame.origin.y + titleLabel.frame.size.height;
                abstractFrame.size.width = 180;
                [abstractLabel setFrame:abstractFrame];
                [abstractLabel sizeToFit];

*从ate50eggs - Find UILabel bottom position so a second UILabel can be created below

获得了这个想法

2 个答案:

答案 0 :(得分:0)

您可以创建UITableViewCell的子类并自己对齐标签。您可以使用NSString的sizeWithFont:方法计算要显示的字符串的大小。 UILabel不支持垂直对齐。

答案 1 :(得分:0)

您可以制作动态标签尺寸和自动换行。像这样:

    currentLabel.lineBreakMode = UILineBreakModeWordWrap;
    currentLabel.numberOfLines = 0;
    NSString *string = @"blablablablabla";
    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
    CGSize constraintSize = CGSizeMake(kLabelWIdth, MAXFLOAT);
    CGSize labelSize = [string sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

    [currentLabel setFrame:CGRectMake(currentLabel.frame.origin.x, currentLabel.frame.origin.y, labelSize.width, labelSize.height)];