2012-07-01 136 views
0

在我的應用程序中,我有4個標籤,我需要將它們立即添加到之前的標籤下方。問題是這些標籤是動態填充文本的,我不知道標籤的大小。動態調整UILabels

例如,在下面的代碼中,我有2個標籤 - myLabel和titleLabel。我需要將titleLabel粘貼到myLabel的正下方,但問題在於後者的高度有所不同。所以我無法給出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]; 

感謝

回答

2

上獲得高度和起始Y座標分別爲myLabel。據我所知,當你調用sizeToFit時(例如)它們會動態地改變。你的情況,你可以簡單地改變行

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

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

您好,我得到錯誤信息 - 沒有名爲「Y」成員「結構CGSize」 –

+0

比較遺憾的是 - 它應該是高度,而不是y。上面更正了它。 – niklon

+0

工作,謝謝 –

0

如果文字是動態的,按理說你有修改文本的功能。

在該函數中,計算myLabel中新修改的文​​本的高度。然後將titleLabel的y位置設置爲myLabel的x位置+ myLabel的新計算高度+您需要的任何緩衝空間。 :)

1

Calulate這個高度dynamiclly:

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

這裏finalIngredients是您的字符串。你只需要提供你的標籤寬度ü要到位標籤的幀的100

製作calulation的動態取決於上一個或下一個標籤使用myLabel.bounds.size.heightmyLabel.frame.origin.y