2012-08-28 122 views
1

我想垂直对齐两个UILabel。其中一个包含说明(最多3行代码),其他代码包含该代码。
像这样垂直对齐两个标签

enter image description here

我尽我所能,但我只能设法创造一个这样的。 enter image description here

回答

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)]; 

让我知道,如果你有关于它是如何工作的任何问题。

+0

感谢您的回答。我用它。但问题是,descriptionLabel只有1行。 (我已经设置了descriptionLabel的行数= 0)。 – sajaz

+0

明白了。我设置了descriptionLabel的行数= 2。现在看起来没问题。非常感谢 – sajaz

+0

'numberOfLines'属性设置了最大行数,如果文本较少,它仍然可以少于这个数量。将其设置为0意味着它可以具有无限制的行数,并且需要以不同的方式处理。在你的问题中,你说它最多有3行,所以这就是为什么它是这样做的。 – Ander

0

您只需将第一个标签的高度更改为仅适合一条线即可。当你这样做时,号码会自动增加。

+0

但问题是,如果说明Label仅包含1行,则对齐出错。 – sajaz