2013-04-05 39 views
0

我的应用程序要求用户输入一些细节,然后通过使用标签通过另一个视图显示。如何调整和转换标签?

由于用户可以输入文本的可变长度,而标签最初有一个固定的长度和宽度,我使用了如下所示的代码来调整标签尺寸:

CGSize maximumLabelSize = CGSizeMake(296,9999); 
     CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font 
            constrainedToSize:maximumLabelSize 
            lineBreakMode:yourLabel.lineBreakMode]; 

      //adjust the label the the new height. 
CGRect newFrame = yourLabel.frame; 
newFrame.size.height = expectedLabelSize.height; 
yourLabel.frame = newFrame; 

问题具有这些修饰是我有许多标签一个接着一个。所以当我更改一个标签的长度时,以下所有标签也需要转换/移动到新位置。

是否有任何方法可以动态更改所有标签的大小和位置,同时确保最终演示文稿与定长标签一样好?

+0

您需要动态管理所有标签的高度。喜欢拿一个int变量'h'给出初始值,就像'yourLabel.frame.size.origin.y'...在那之后h = h + expectedLabelSize.height ...将这个h值赋给下一个标签的y位置 – 2013-04-06 06:32:16

回答

0
int h=10; // Initial Height as you want 
     for(int k=0;k<[headItemArray count];k++) { 
      CGSize size_txt_overview1 = [[headItemArray objectAtIndex:k] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:18] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 
      UILabel *lbl_headitem = [[UILabel alloc]initWithFrame:CGRectMake(3,h, 690, size_txt_overview1.height)];// See the 'h' value 
      lbl_headitem.text = [headItemArray objectAtIndex:k]; 
      [lbl_headitem setTextAlignment:UITextAlignmentLeft]; 
      [lbl_headitem setBackgroundColor:[UIColor clearColor]]; 
      [lbl_headitem setTag:k]; 
      lbl_headitem.numberOfLines=0; 
      [lbl_headitem setTextColor:[UIColor redColor]]; 
      [lbl_headitem setFont:[UIFont fontWithName:@"Helvetica" size:18]]; 
      [scrollAttributes addSubview:lbl_headitem]; 
      h = h + size_txt_overview1.height;// important 
     }