对于我的第一个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));
}
我没有看到这种行为。你能把桌面视图向上移动一个像素吗?它有可能不在视图的绝对顶部吗? –