2013-04-05 2 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 위치에 지정합니다. –

답변

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 
     } 
관련 문제