为什么 NSComboBox 内容在错误的位置?
Why is NSComboBox content in the incorrect position?
我正在尝试在 Mac 应用程序中布局 NSComboBox
,但出现了一些奇怪的行为。实际上,我有一个视图,其中有一个 NSComboBox
作为子视图以及其他一些子视图,但我创建了一个简单的示例来显示我所看到的相同问题。
出于某种原因,文本字段并不像我期望的那样完全垂直居中。
这是我的 TestComboBox
:
这是一个 Apple NSComboBox
(注意文本是垂直居中的,并且在高亮颜色之前有少量的前导间距):
我创建了一个简单示例来说明问题:
class TestComboBox: NSView {
private let comboBox = NSComboBox(labelWithString: "")
override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
commonInit()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
commonInit()
}
private func commonInit() {
comboBox.isEditable = true
addSubview(comboBox)
}
override func layout() {
comboBox.sizeToFit()
comboBox.frame = CGRect(x: 0, y: 0, width: bounds.width, height: comboBox.bounds.height)
}
}
如果将上述视图添加到基本 Mac 应用程序(故事板)并将其固定到具有以下约束的视图控制器:
我想我正在尝试正确布局组合框,但我不确定为什么它看起来与 Apple 示例略有不同,因为它们都使用 NSComboBox
!
非常感谢任何指导!
组合框初始化为
private let comboBox = NSComboBox(labelWithString: "")
但 init(labelWithString:)
是 NSTextField
的便利初始值设定项,用于创建标签。使用 init()
代替:
private let comboBox = NSComboBox()
我正在尝试在 Mac 应用程序中布局 NSComboBox
,但出现了一些奇怪的行为。实际上,我有一个视图,其中有一个 NSComboBox
作为子视图以及其他一些子视图,但我创建了一个简单的示例来显示我所看到的相同问题。
出于某种原因,文本字段并不像我期望的那样完全垂直居中。
这是我的 TestComboBox
:
这是一个 Apple NSComboBox
(注意文本是垂直居中的,并且在高亮颜色之前有少量的前导间距):
我创建了一个简单示例来说明问题:
class TestComboBox: NSView {
private let comboBox = NSComboBox(labelWithString: "")
override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
commonInit()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
commonInit()
}
private func commonInit() {
comboBox.isEditable = true
addSubview(comboBox)
}
override func layout() {
comboBox.sizeToFit()
comboBox.frame = CGRect(x: 0, y: 0, width: bounds.width, height: comboBox.bounds.height)
}
}
如果将上述视图添加到基本 Mac 应用程序(故事板)并将其固定到具有以下约束的视图控制器:
我想我正在尝试正确布局组合框,但我不确定为什么它看起来与 Apple 示例略有不同,因为它们都使用 NSComboBox
!
非常感谢任何指导!
组合框初始化为
private let comboBox = NSComboBox(labelWithString: "")
但 init(labelWithString:)
是 NSTextField
的便利初始值设定项,用于创建标签。使用 init()
代替:
private let comboBox = NSComboBox()