2015-01-12 73 views
4

我有一個NSView類,它在CALayer上繪製它的內容。這些NSView類被保存在具有單列的NSTableView中。我需要這樣做,NSTableView調整它的大小以適應它包含的NSView的內容,它可以具有可變的寬度,即NSTableView需要與最寬的單元具有相同的寬度。如果單元格的寬度大於可用區域,這又會允許用戶滾動。自定義基於視圖的nstableview調整大小

想象它像一個多軌音頻編輯器,其中每個視圖是一個軌道,但軌道可以有不同的長度。現在,NSView單元格自動調整寬度以適應表格列的大小,所以我可以看到兩種可能性:一種是使單元格NSViews設置它們的寬度,並以某種方式讓這個佈局實現無處不在其他。另一個是使tableview或nstablecolumn根據最大寬度設置其寬度。我曾嘗試設置NSTableColumn寬度和最小寬度,但這似乎不起作用(它不總是調整到正確的大小,如果大小很大)。

任何建議或幫助,使其工作?

回答

2

如果您使用CALayer(讓我們稱之爲根層)來繪製視圖內容,請嘗試創建另一個CALayer,它將是根層的一個子層(這將是音軌)。您可以獨立設置子圖層的大小,也可以知道哪一個最大。 根層將永遠和表格視圖一樣大,正如你所說的:「NSView單元格自動調整寬度以適應表格列的大小」 - 不要嘗試改變根層的大小,而是改變子層的大小。 一旦你確定最寬的孩子只是改變表視圖​​框架是相同的寬度。

相關問題