为什么 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()