【发布时间】:2021-11-28 15:04:33
【问题描述】:
我正在尝试在 Mac 应用程序中布局 NSComboBox,但出现了一些奇怪的行为。实际上,我有一个视图,其中有一个 NSComboBox 作为子视图以及其他一些子视图,但我创建了一个简单的示例来显示我看到的相同问题。
由于某种原因,文本字段没有像我预期的那样完全垂直居中。
这是一个 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!
非常感谢任何指导!
【问题讨论】:
-
你说的“文本字段不粘在组合框的中心”是什么意思,哪个文本字段?
-
我希望组合框中的文本完全垂直居中,而由于某种原因它似乎更高。我已经编辑了我的问题并添加了另一张图片进行比较。
-
如果你使用情节提要,为什么不直接将
NSComboBox添加到情节提要中,不用所有这些代码?
标签: macos cocoa nscombobox