對於我的第一個Mac應用程序,我試圖用一個表視圖來製作一個簡單的窗口。我啓用了頭,但它在我的NSTableHeaderView
頂部增加了一個煩人的行:NSTableHeaderView添加一行?
我似乎無法找到一個屬性將其刪除。我知道這是可以去掉的,因爲Finder無權它:
當我禁用頭,邊框是不存在的。我還應該注意到NSTableView
位於NSSplitView
內。有任何想法嗎?
對於我的第一個Mac應用程序,我試圖用一個表視圖來製作一個簡單的窗口。我啓用了頭,但它在我的NSTableHeaderView
頂部增加了一個煩人的行:NSTableHeaderView添加一行?
我似乎無法找到一個屬性將其刪除。我知道這是可以去掉的,因爲Finder無權它:
當我禁用頭,邊框是不存在的。我還應該注意到NSTableView
位於NSSplitView
內。有任何想法嗎?
問題的存在是因爲窗口框架和表視圖的滾動視圖都具有1px邊框。根據您的佈局,您可以將包含NSTableView
的NSScrollView
的borderStyle
設置爲NSNoBorder
(請注意,這將從滾動視圖的所有側面移除1px邊框)。或者您可以將滾動視圖向上移動1px。
我已經設置了'NSNoBorder',但向上移動1px解決了它(不能相信我沒有想到這一點)。 Finder似乎也是這樣做的,因爲兩幅圖像之間確實存在1px的差異。謝謝您的幫助。 – Rits
如果表視圖位於分割視圖內,則可能無法將其向上移動,因爲它是由分割視圖自動排列的。在這種情況下,只需將自定義視圖放入分割視圖中,然後將表視圖放入自定義視圖中即可。 –
另一個解決方案是:
NSTableHeaderView
-drawRect:
水平地畫出1點白線在頂部以匹配表頭視圖的背景顏色。-initWithFrame:
傳遞現有的headerView
的幀來實例化自定義標題視圖的實例。headerView
屬性。的-drawRect:
實現:
- (void)drawRect:(NSRect)dirtyRect {
// Allow the table header view to draw itself
[super drawRect:dirtyRect];
// Draw a 1pt white line across the width of the header view
[[NSColor whiteColor] setFill];
NSRectFill(NSMakeRect(0.0f, 0.0f, self.bounds.size.width, 1.0));
}
我沒有看到這種行爲。你能把桌面視圖向上移動一個像素嗎?它有可能不在視圖的絕對頂部嗎? –