我正在为Yosemite制作一个Cocoa应用程序。
我在界面构建器中添加了一个基于NSTableView的视图,但边界2像素宽度比Yosemite的Finder更宽。 细胞选择颜色为蓝色,而Yosemite的Finder为灰色。
这就是Yosemite的Finder表视图的样子。
我检查了Interface Builder中的设置。 NSTableView的帧设置的超级滚动视图是(0,0,149,257):
剪辑视图的帧设置为(1,1,147,255)且无法更改。
如何制作与Yosemite的Finder相同的NSTableView?
非常感谢!
答案 0 :(得分:12)
Finder侧边栏不是表格视图,它是来源列表 NSOutlineView
:
边框应用于封闭的滚动视图:
另请注意,标准NSOutlineView
允许您从Interface Buider中调整高亮样式:
答案 1 :(得分: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.
}
然后,您可以通过实施
提供自定义NSTableRowView
课程的实例
- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row
在NSTableViewDelegate
。
答案 2 :(得分:0)
对于想要删除NSTableView边框的人......
我的要求是删除NSTableView的边框颜色,这样它应该看起来像一个白色的盒子。尝试了所有的属性和论坛,但找不到办法做到这一点。最后,我在故事板中提出了一个可以解决问题的肮脏黑客。如果有人有更好的选择,请告诉我们。
-2
。这样NSTableView边框就会出现在Box Left=2
,Top=2
,Bottom=-2
和Right=-2
多数民众赞成。