垂直对齐两个标签

时间:2012-08-28 04:39:02

标签: objective-c ios ios4

我想垂直对齐两个UILabel。一个包含描述(最多3行),其他包含数字 喜欢这个

enter image description here

我尽了最大努力,但我只能创造一个像这样的人。 enter image description here

2 个答案:

答案 0 :(得分:0)

您需要做的就是将第一个标签的高度更改为仅适合一行。当你这样做时,号码会自动上升。

答案 1 :(得分:0)

以下代码可以使用:

#define kDescriptionWidth 200

...

- (void)alignNumLabel:(UILabel *)numLabel withDescriptionLabel:(UILabel *)descriptionLabel topLeftPoint:(CGPoint)topLeftPoint {
    numLabel.frame = CGRectMake(topLeftPoint.x, topLeftPoint.y, 0, 0);
    [numLabel sizeToFit];

    CGSize maxDescriptionSize = CGSizeMake(kDescriptionWidth, (descriptionLabel.numberOfLines == 0 ? CGFLOAT_MAX : descriptionLabel.font.lineHeight * descriptionLabel.numberOfLines));
    CGSize labelSize = [descriptionLabel.text sizeWithFont:descriptionLabel.font constrainedToSize:maxDescriptionSize lineBreakMode:UILineBreakModeWordWrap];
    descriptionLabel.frame = CGRectMake(CGRectGetMaxX(numLabel.frame) + 5, numLabel.frame.origin.y, labelSize.width, labelSize.height);
}

要使用它,请执行以下操作:

[self alignNumLabel:numLabel withDescriptionLabel:descriptionLabel topLeftPoint:CGPointMake(10, 10)];
[self alignNumLabel:numLabel2 withDescriptionLabel:descriptionLabel2 topLeftPoint:CGPointMake(10, CGRectGetMaxY(descriptionLabel.frame) + 10)];

如果您对其工作原理有任何疑问,请与我们联系。