Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 垂直对齐两个标签_Objective C_Ios_Ios4 - Fatal编程技术网

Objective c 垂直对齐两个标签

Objective c 垂直对齐两个标签,objective-c,ios,ios4,Objective C,Ios,Ios4,我想垂直对齐两个UIL标签。一个包含描述(最多3行),另一个包含数字。 像这样 我尽了最大的努力,但我只能创造一个这样的。 您所需要做的就是更改第一个标签的高度,使其仅适合一行。执行此操作时,号码将自动增加。以下代码将起作用: #define kDescriptionWidth 200 ... - (void)alignNumLabel:(UILabel *)numLabel withDescriptionLabel:(UILabel *)descriptionLabel topLeftP

我想垂直对齐两个UIL标签。一个包含描述(最多3行),另一个包含数字。
像这样

我尽了最大的努力,但我只能创造一个这样的。

您所需要做的就是更改第一个标签的高度,使其仅适合一行。执行此操作时,号码将自动增加。

以下代码将起作用:

#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
,以防以后您希望允许无限行。