首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何删除NSTableView的边框并更改与Finder相同的单元格选择颜色?

如何删除NSTableView的边框并更改与Finder相同的单元格选择颜色?
EN

Stack Overflow用户
提问于 2015-04-07 09:00:26
回答 3查看 4.9K关注 0票数 7

我在为约塞米蒂做一个可可应用。

我在界面构建器中添加了一个基于视图的NSTableView,但是边框比约塞米蒂的查找器宽2像素,而且边框比约塞米蒂的查找器更厚,单元格选择颜色是蓝色的,而约塞米蒂的查找器是灰色的。

这就是Yosemite的Finder的桌面视图。

我检查了Interface中的设置。NSTableView的框架设置的超级滚动视图为(0,149,257):

而剪辑视图的帧设置为(1,1,147,255),不能更改。

如何制作一个与约塞米蒂的NSTableView相同的查找器?

谢谢你一吨!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-07 11:10:46

查找侧栏不是表视图,而是源列表NSOutlineView

边框在包围滚动视图周围应用:

还请注意,标准NSOutlineView允许您从Interface中调整突出显示样式:

票数 13
EN

Stack Overflow用户

发布于 2016-08-17 17:10:00

根据我的经验,即使选择了“源列表”高亮样式,选定的行仍然是蓝色的。为了避免这种情况,我需要通过对表或大纲视图进行子类划分和添加来防止它成为第一个响应者。

代码语言:javascript
运行
复制
- (BOOL)becomeFirstResponder {
    return NO;
}

编辑:发现如果您想支持键盘导航,becomeFirstResponder实际上是很重要的。我找到了一个更好的解决方案,不覆盖becomeFirstResponder

首先,使用(重写)空NSTableRowView方法创建一个自定义setEmphasized:子类:

代码语言:javascript
运行
复制
- (void)setEmphasized:(BOOL)emphasized {
    // This avoids a blue background when selected in a source list that has first responder status.
}

然后,您可以通过实现自定义NSTableRowView类提供一个实例。

代码语言:javascript
运行
复制
- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row

在你的NSTableViewDelegate里。

票数 2
EN

Stack Overflow用户

发布于 2017-08-31 16:59:16

无论谁想要移除NSTableView边界..。

我的要求是去掉NSTableView的边框颜色,这样它看起来就像一个白色的盒子。尝试了所有的属性和论坛,但找不到方法去做。最后,我在故事板上找到了一个肮脏的黑客,可以解决这个问题。如果有人有更好的选择,请告诉我们。

  1. 将NSTableView嵌入到CustomBox中。将Box BorderType设置为“无”
  2. 然后将NSTableView的约束(左、上、右和下)设置为包含框。将值设置为-2。因此,NSTableView边框将位于方框之外
  3. 现在,在Storyboard中,选择clipView(NSClipView)的NSTableView。clipView是NSTableView的superView
  4. 转到“大小检查器”并取消选中“内容嵌入”的“自动调整”属性。
  5. 将值设置为Left=2Top=2Bottom=-2Right=-2

就是这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29487687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档