2015-04-07 82 views
4

我正在爲Yosemite製作Cocoa應用程序。如何刪除NSTableView的邊框並更改單元格的選擇顏色與Finder相同?

我在界面構建器中添加了一個基於NSTableView的視圖,但邊界2像素的寬度和厚度比優勝美地的Finder的厚。 細胞選擇顏色是藍色,而優勝美地的Finder是灰色的。

enter image description here

enter image description here

這是優山美地的Finder的表視圖的樣子。

enter image description here

我檢查Interface Builder中的設置。 NSTableView的的幀設定的超級滾動視圖是(0,0,149,257): enter image description here

雖然剪輯視圖的幀設置爲(1,1,147,255),並且不能被改變。

enter image description here

,以及如何使同一個NSTableView的約塞米蒂的Finder的?

謝謝!

+0

注意滾動視圖的描述:「**邊框**滾動視圖 - 表格視圖」。檢查滾動視圖的屬性並關閉邊框。 1像素分頻器可能來自分割視圖。 –

回答

8

取景器側邊欄是不是表視圖這是一個源列表NSOutlineView

enter image description here

邊境大約將封閉滾動視圖應用:

enter image description here

另請注意,標準NSOutlineView可讓您從Interface Buider中調整突出顯示樣式:

enter image description here

2

以我的經驗選擇行仍漆成藍色,即使選擇了「源列表」高亮風格。爲了避免這種情況,我需要通過繼承它並添加

- (BOOL)becomeFirstResponder { 
    return NO; 
} 

編輯防止表或大綱視圖成爲第一響應者: 原來,如果你想支持鍵盤導航becomeFirstResponder實際上是很重要的。我發現了一個更好的解決方案,不會覆蓋becomeFirstResponder

首先,創建一個自定義NSTableRowView子類有(覆蓋)空setEmphasized:方法:

- (void)setEmphasized:(BOOL)emphasized { 
    // This avoids a blue background when selected in a source list that has first responder status. 
} 

然後,您可以在您的NSTableViewDelegate實施

- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row 

提供自定義NSTableRowView類的一個實例。

0

要誰想刪除NSTableView的邊界...

我的要求是刪除NSTableView的的邊框顏色,這樣,它應該看起來像一個白盒子。嘗試所有的屬性和論壇,但無法找到一個方法來做到這一點。最後,我想出了一個可以解決問題的故事板中的骯髒黑客攻擊。如果有人有更好的選擇,請告訴我們。

  1. 將NSTableView嵌入到自定義框中。將Box BorderType設置爲'None'
  2. 然後將NSTableView的約束(左,頂部,右側和底部)設置爲包含框。將值設置爲-2。以便NSTableView邊框將位於框外
  3. 現在在Storyboard中,選擇NSTableView的'clipView(NSClipView)'。 clipView是NSTableView的
  4. 轉至大小督察的上海華並取消選中「自動調整」的「內容插圖」
  5. 設置的值:Left=2Top=2Bottom=-2Right=-2

那財產它。

相關問題