我正在一个NSSearchFieldCell
子类中做一些自定义绘图。但是,覆盖其两种绘图方法中的任何一种都会导致占位符文本不对齐。
例如,仅仅通过使用这个NSSearchFieldCell
覆盖NSCell
的绘图方法的自定义子类将导致占位符文本左对齐。
class CustomSearchFieldCell: NSSearchFieldCell {
override func draw(withFrame cellFrame: NSRect, in controlView: NSView) {
super.draw(withFrame: cellFrame, in: controlView)
}
override func drawInterior(withFrame cellFrame: NSRect, in controlView: NSView) {
super.drawInterior(withFrame: cellFrame, in: controlView)
}
}
即使在将搜索字段的centersPlaceholder
属性设置为true
并且重新布局搜索字段或重置搜索字段的stringValue
.
注释掉这两种方法将使占位符文本(和放大镜再次居中。
然而,只有一个覆盖(即使它什么都不做,只调用它的超类的实现)会使搜索字段的占位符文本和放大镜变为左对齐。
问题是,如何获得center align placeholder
工作并仍然拥有自定义图纸?
请注意,我需要在单元格内进行一些自定义绘图和鼠标处理,因此需要覆盖。
这是在 macOS 10.12.6 上观察到的。