在我的应用程序中,我有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];
由于
答案 0 :(得分:2)
分别使用myLabel.bounds.size.height
和myLabel.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
新计算的高度+它们之间所需的缓冲区空间。 :)