2013-07-05 85 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屬性,每當你想改變高度。您也可以刪除文本視圖的約束條件並創建新的約束條件,但更新常量是首選方式,因爲它需要的代碼更少,運行時效率更高。

相關問題