2012-05-01 66 views
8

我有一個基於視圖的NSTableView嵌入在NSScrollView中。它具有x個像素高的自定義單元。 NSScrollView與它是子視圖的面板大小相同。我想調整整個NSTableView的大小,具體取決於表中有多少行。根據表中的行數調整NSTableView或NSScrollView的大小

除調整大小外,一切正常。在IB中手動調整滾動視圖似乎具有所需的效果,但NSSrollView似乎沒有調整其視圖的類方法(如NSView具有setFrame)。我應該調整scollview,tableview,還是其他的東西? NSScrollView有一個setFrame方法或類似的,我缺少?

謝謝。

+0

你爲什麼需要這樣做?如果你在界面生成器中放置了一個'NSTableView',它已經在一個滾動視圖中,一切都爲你管理。 –

回答

4

在嘗試以編程方式進行之前,請確保在nib文件中正確設置了大綱視圖的自動調整掩碼。這聽起來像你只是想讓大綱視圖(及其滾動視圖)始終保持與其內部窗口相同的大小。

默認情況下,您將進入一個窗口的NSScrollView/NSOutlineView組合的自動調整大小面具看起來如下:

enter image description here

換句話說,它的成立,以始終保持大小相同現在,無論你調整窗口大小有多大。

你想要做的是改變自動調整大小面具看起來像下面的圖片:

enter image description here

要做到這一點,你在白色的自動調整大小框中單擊地方有一個紅色虛線來切換成一個堅實的紅線。一旦這樣配置,滾動視圖(和表格視圖)將始終(自動)調整爲與其所在窗口大小相同的大小。

也可能有一種方法可以使用Lion的新「自動佈局「功能,但我必須將其留給有更多經驗的人。

+0

我不知道我可以在IB做這件事!謝謝你這樣一個徹底的答案。 – rick

0
scrollview.frame = CGRrectMake(x, y, w, h); 
1

如果你真的需要做到這一點(如果你希望所有的行以適應滾動視圖減輕需要滾動等)和滾動視圖僅僅是窗口的一部分/視圖,你可以這樣做:

[[myTableView enclosingScrollView] setFrame:newFrameRect]; 
+0

我嘗試過這種技術,但表格沒有直觀更新,是否有另一個需要使用的命令? –

相關問題