【问题标题】:How to remove NSTableView indentation on Big Sur如何在 Big Sur 上删除 NSTableView 缩进
【发布时间】:2021-02-23 17:41:13
【问题描述】:
【问题讨论】:
标签:
xcode
macos
cocoa
nstableview
macos-big-sur
【解决方案1】:
.fullWidth 实际上包括行级别的水平填充。
您需要设置tableView.style = .plain 才能恢复大苏尔之前的外观和感觉。
来自NSTableView 头文件:
@available(macOS 11.0, *)
public enum Style : Int {
// Automatically infers the effectiveStyle from the table view hierarchy.
case automatic = 0
// Edge-to-edge style with standard content padding at the ends of each row. This content padding is constant and independent of intercellSpacing.
case fullWidth = 1
// Inset style with rounded corners selection
case inset = 2
/* The source list style of NSTableView. Setting this style will have the side effect of setting the background color to "source list".
Additionally in NSOutlineView, the following properties may change to get the standard "source list" look: indentationPerLevel, rowHeight and intercellSpacing. After setting the style it is possible to change any of the other properties as required.
In 10.11, if the background color has been changed from the "source list" background color to something else, the table will no longer draw the selection as a source list blur style, and instead will draw a normal selection highlight.
This replaces NSTableViewSelectionHighlightStyleSourceList which is to be deprecated.
*/
case sourceList = 3
// A plain style. No insets, padding or any other kind of decoration applied to the row or its background. The cells are equally spaced in the row using intercellSpacing.width.
case plain = 4
}
【解决方案2】:
☝️ 一个有趣的观察。您可以在 Interface Builder 中设置普通样式,但 many people report 它不起作用。如果您在 Big Sur 上编译 not 似乎不会应用它。在这种情况下,就像其他答案所暗示的那样,在代码中指定样式就可以了:
if #available(macOS 11.0, *) {
self.tableView.style = .plain
}