2014-02-19 34 views
3

我對NSTextView進行了子類化,並使用以下代碼來計算內在內容大小,以便在我的自動佈局約束中文本視圖的高度隨其內容增長。NSTextView的內在內容大小

- (CGSize)intrinsicContentSize 
{ 
    return [[self layoutManager] usedRectForTextContainer:[self textContainer]].size; 
} 

這個工作除了初始調用,它返回(0,0)的大小。

如果在創建文本視圖並在-layout中使文本視圖的內容大小無效後,我在我的視圖中調用[self setNeedsLayout:YES],它將返回新空文本視圖的正確大小。

有沒有辦法讓-intrinsicContentSize爲我的新文本視圖返回正確的大小而不更新視圖的佈局?

+0

調用'invalidateIntrinsicContentSize'? – matt

+0

順便說一句,使文本視圖與其內容一起成長的通常方法是看它的'contentSize',它會自動爲您維護.... – matt

+0

@matt這就是我在-layout中所做的工作但我不明白爲什麼我必須在第一次佈置時這樣做。當文本更改正常時,我會使內容大小無效。 –

回答

0

看看this thread,其中Alexander Staubo分享了你的代碼的微調版本。這對我有用。