2016-02-08 75 views
1

在我的UIViewController中,我有一個不可編輯的屬性UITextView啓用滾動,並且我想調整滾動文本的高度以適應所有屏幕大小的寬度而沒有額外的空白區域。我正在使用AutoLayout併爲textview及其高度約束設置插座。在視圖控制器的viewDidLoad方法中,我使用sizeThatFits方法來更新文本視圖高度,但生成的大小太小。AutoLayout滾動UITextView sizeThatFits不工作

- (void)viewDidLoad{ 
    [super viewDidLoad]; 
    NSLog(@"INIT HEIGHT: %f, myTextView.frame.size.height); 
    CGSize sizeToFit = 
    [myTextView sizeThatFits: CGSizeMake(myTextView.frame.size.width, MAXFLOAT)]; 
    myTextViewHeightConstraint.constant = sizeToFit.height; 
    [myTextView updateConstraints]; 
    [myTextView layoutIfNeeded]; 
    NSLog(@"NEW HEIGHT: %f", myTextView.frame.size.height); 
} 

日誌表明高度確實是從我的4000默認更改爲2502,但2502我只看到一半我的文字的滾動通過。正如一個解決方案所暗示的,我正在避免在滾動視圖中嵌套文本視圖,因爲這在文檔中是不鼓勵的。我錯過了什麼?提前致謝。

回答

0

我發現UITextView的框架會自動調整到它的內容大小,所以動態設置它是沒有必要的。 sizeThatFitsUIView方法,並且不修改文本內容的大小,而是文本顯示在窗口的大小,我需要的唯一代碼就是滾動文本到頂部:

[myTextView scrollRectToVisible: CGRectMake(0,0,1,1) animated:NO]; 

此以及任何Autolayout約束更新不應在viewDidLoad中進行,而應在viewDidLayoutSubviewsviewWillAppear中進行。最好的位置可能會更好地解釋 - 我願意發表評論。