Objective c 垂直对齐两个标签
我想垂直对齐两个UIL标签。一个包含描述(最多3行),另一个包含数字。Objective c 垂直对齐两个标签,objective-c,ios,ios4,Objective C,Ios,Ios4,我想垂直对齐两个UIL标签。一个包含描述(最多3行),另一个包含数字。 像这样 我尽了最大的努力,但我只能创造一个这样的。 您所需要做的就是更改第一个标签的高度,使其仅适合一行。执行此操作时,号码将自动增加。以下代码将起作用: #define kDescriptionWidth 200 ... - (void)alignNumLabel:(UILabel *)numLabel withDescriptionLabel:(UILabel *)descriptionLabel topLeftP
像这样 我尽了最大的努力,但我只能创造一个这样的。
您所需要做的就是更改第一个标签的高度,使其仅适合一行。执行此操作时,号码将自动增加。以下代码将起作用:
#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)];
如果您对其工作原理有任何疑问,请告诉我。但问题是,如果描述标签仅包含一行,则对齐错误。谢谢您的回答。我用过。但问题是,descriptionLabel只有一行。(我已经设置了descriptionLabel行数=0)。明白了。我设置descriptionLabel行数=2。现在看来还可以。多亏了
numberOfLines
属性设置了最大行数,如果文本较少,它仍然可以小于最大行数。将其设置为0意味着它可以有无限行,需要以不同的方式处理。在你的问题中,你说它最多有3行,这就是为什么它是这样做的。是的,我只是测试了2行的数量。现在我可以根据需要更改它。非常感谢您的回答,非常感谢…我只是对代码做了一个小小的更改,以便它可以与descriptionLabel.numberOfLines==0
,以防以后您希望允许无限行。