我的應用程序由一個NSScrollView
組成,其文檔視圖包含多個垂直堆疊的NSTextViews
- 每個文本添加後都會在垂直方向調整大小。使用Autolayout擴展NSTextViews
目前,這是全部代碼管理。 NSTextViews
自動調整大小,但我觀察它們的大小調整爲NSViewFrameDidChangeNotification
,重新計算它們的所有來源以便它們不重疊,並調整它們的超級視圖(滾動視圖的文檔視圖),以便它們都適合並可以滾動到。
這看起來好像它將成爲自動佈局的完美人選!我在第一個文本視圖及其容器,最後一個文本視圖及其容器,以及每個文本視圖之間設置了NSLayoutConstraints
。然後,如果任何文本視圖增長,它會自動「下推」它下面的文本視圖的起源以滿足限制,最終增加文檔視圖的大小,並且每個人都很開心!
除了,似乎沒有辦法讓NSTextView
自動增長,因爲文本是在基於約束的佈局中添加的?使用完全相同的NSTextView
,如果我沒有爲其高度指定約束,它會自動擴展爲之前輸入的文本,它會默認爲0並且不會顯示。如果我確實指定了一個約束條件,即使是不等於> = 20,它仍然停留在該大小,並且不會隨着文本的添加而增長。
我懷疑這與NSTextView的實現-intrinsicContentSize
有關,默認返回(NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric)
。
所以我的問題:如果我的子類NSTextView
基於我的文本的佈局返回更有意義的intrinsicContentSize
,那麼我的自動佈局是否按預期工作?
任何指針實施intrinsicContentSize
垂直調整大小的NSTextView?
你可以添加一些圖形/截圖/線框有助於理解設置嗎?你是否嘗試計算文本高度並將其返回到'intrinsicContentSize'中? – JJD