动态调整UILabels的大小

时间:2012-07-01 02:29:51

标签: ios uilabel

在我的应用程序中,我有4个标签,我需要在上一个标签下方添加它们。问题是这些标签是动态填充文本的,我不知道标签的大小。

例如,在下面的代码中,我有2个标签 - myLabel和titleLabel。我需要在myLabel下方粘贴titleLabel,但问题是后者的高度会有所不同。所以我无法给出titleLabel的y坐标。

CGRect labelFrame = CGRectMake(22, 50, 280, 150);
UILabel *myLabel = [[UILabel alloc] initWithFrame:labelFrame];
[myLabel setText:finalIngredients];
[myLabel setBackgroundColor: [UIColor lightGrayColor]];
[myLabel setFont:[UIFont fontWithName:@"Helvetica" size:15]];
[myLabel setNumberOfLines:0];
[myLabel sizeToFit];
[self.view addSubview:myLabel];


CGRect titleLabelFrame = CGRectMake(0, 25, 400, 15);
UILabel *titleLabel = [[UILabel alloc] initWithFrame:titleLabelFrame];
[titleLabel setText:title];
[self.view addSubview:titleLabel];

由于

3 个答案:

答案 0 :(得分:2)

分别使用myLabel.bounds.size.heightmyLabel.frame.origin.y获取高度并开始myLabel的y坐标。据我所知,当您调用sizeToFit时(例如),它们将动态更改。在您的情况下,您只需更改行

CGRect titleLabelFrame = CGRectMake(0, 25, 400, 15);

CGRect titleLabelFrame = CGRectMake(0, myLabel.frame.origin.y + myLabel.bounds.size.height, 400, 15);

答案 1 :(得分:1)

动态计算高度:

 CGSize size = [finalIngredients sizeWithFont:[UIFont systemFontOfSize:15]
      constrainedToSize:CGSizeMake(100, 200)
          lineBreakMode:UILineBreakModeWordWrap];

这里的finalIngredients是你的字符串。你只需要提供你想要的标签宽度而不是100。

根据上一个或下一个标签动态制作标签的框架

答案 2 :(得分:0)

如果文本是动态的,那么您可以使用修改文本的功能。

在该函数内部,计算myLabel内新修改文本的高度。然后将titleLabel的y位置设置为myLabel的x位置+ myLabel新计算的高度+它们之间所需的缓冲区空间。 :)