2013-07-05 4 views
1

AutoLayout 기능을 사용하고 있습니다. 모든 것이 제대로 작동하지만, 프로그램 적으로 컨트롤의 크기를 조정하면 다른 하위 뷰나 컨트롤이 적절하게 정렬되지 않습니다. 프로그래밍 방식으로 컨트롤의 크기를 조정 한 후 제약 조건을 어떻게 업데이트합니까?크기 조정 컨트롤을 프로그래밍 한 후에 AutoLayout이 작동하지 않습니다 - iOS

또는

코드의 크기를 조절 한 후 AutoLayout이 작동합니까?

편집 : 여기

내가 문자열을 기반으로, 텍스트 뷰의 크기를 조정하고 있지만, 아래 파단과 중복된다.

- (void)textViewDidChange:(UITextView *)textView 
    { 
    if (textView == pupose_txt_view) { 
     CGSize maximumLabelSize = CGSizeMake(self.topic_text_view.frame.size.width, 
              FLT_MAX); 

     UILabel *label = [[UILabel alloc] initWithFrame:pupose_txt_view.frame]; 
     CGSize expectedLabelSize = [pupose_txt_view.text sizeWithFont:pupose_txt_view.font 
             constrainedToSize:maximumLabelSize 
              lineBreakMode:label.lineBreakMode]; 


     CGRect newFrame = pupose_txt_view.frame; 
     newFrame.size.height = expectedLabelSize.height; 
     pupose_txt_view.frame = newFrame; 
    } 
} 
+0

컨트롤의 크기를 조정하고 코드를 표시하는 방법은 무엇입니까? – Sven

+0

@Sven 편집을 확인하십시오. – Newbee

답변

1

당신은 당신이 자동 레이아웃을 사용하는 경우 뷰의 위치 나 크기를 업데이트 할 setFrame:을 사용할 수 없습니다. 대신 레이아웃 시스템이 모든 뷰의 위치를 ​​업데이트 할 수 있도록 새 크기를 설정하기 위해 구속 조건을 업데이트해야합니다.

이렇게하려면 텍스트 크기의 높이 제한 조건에 대한 콘센트를 만들고 높이를 변경하고 싶을 때마다 constant 속성을 설정하십시오. 또한 텍스트보기에 대한 제약 조건을 제거하고 새 제약 조건을 만들 수도 있지만 상수를 업데이트하는 것은 코드가 적게 필요하고 런타임에보다 효율적이기 때문에 선호되는 방식입니다.

관련 문제