【发布时间】:2017-11-25 16:38:20
【问题描述】:
我的 OS X 应用有一个 NSTableView 具有更大的行高:
myTableView.rowSizeStyle = .large
我尝试在里面放一些文字,但我发现我输入的文字不能垂直居中。
请看下面的代码。我有三列,前两列使用NSTextField 和NSTextView 放置一些文本。第三个是复选框按钮。
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
if (tableColumn?.identifier == "Column1") {
let field = NSTextField()
field.stringValue = "someText"
field.isBordered = false
field.isEditable = false
field.backgroundColor = NSColor.red
return field
} else if (tableColumn?.identifier == "Column2") {
let field = NSTextView()
field.string = "someText"
field.backgroundColor = NSColor.green
return field
} else if (tableColumn?.identifier == "Column3") {
let field = NSButton()
field.setButtonType(NSSwitchButton)
field.title = "check me"
return field
}
return nil
}
我的代码几乎基于Apple's document:“创建和配置 NSTextField 单元”。
结果如下:
如您所见,前两列中的文本没有垂直居中,而复选框自动垂直居中。
当使用func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? 时,就像Apple 文档显示的那样,放置文本以使其垂直居中的正确方法是什么?
编辑: 出于某种原因,我不使用 Interface Builder。所以问题在于以编程方式对 UI 进行编码。
【问题讨论】:
-
@EricAya 我会试一试,但对于每个想要做同样的事情的人来说,这都是常见的方式吗?这听起来比我想象的要复杂,因为应该有很多人遇到同样的问题。
-
@EricAya 奇怪的是,如果你曾经使用 NSTableView 设计过一个 OS X 应用程序,你不会遇到同样的问题吗?
标签: swift macos nstableview