2012-08-28 158 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