如何在使用Swift的文本字段单元格中在文本左侧添加填充?以前的答案仅适用于UITextField或Objective C。请注意,这适用于NSTextField。
这里是一个使用Objective C制作自定义NSTextFieldCell
的示例。
使用Swift移植后,代码如下:
import Cocoa
class PaddedTextFieldCell: NSTextFieldCell {
@IBInspectable var leftPadding: CGFloat = 10.0
override func drawingRect(forBounds rect: NSRect) -> NSRect {
let rectInset = NSMakeRect(rect.origin.x + leftPadding, rect.origin.y, rect.size.width - leftPadding, rect.size.height)
return super.drawingRect(forBounds: rectInset)
}
}
然后将内部的 TextFieldCell
的类更改为 PaddedTextFieldCell
成功!
要从代码中使用PaddedTextFieldCell
,您可以像这样操作(感谢@Sentry.co的帮助):
class ViewController: NSViewController {
@IBOutlet weak var textField: NSTextField! {
didSet {
let paddedTextField = PaddedTextFieldCell()
paddedTextField.leftPadding = 40
textField.cell = paddedTextField
textField.isBordered = true
textField.isEditable = true
}
}
....
}
NSTextField
的,而不是NSTextFieldCell
。我仍然无法弄清楚如何为NSTextField
(而不是NSTextFieldCell
)添加填充。 - fnc12NSTextField
都有一个 NSTextFieldCell
,它实现了绘制功能。因此,如果你想要自定义文本字段的绘制,你需要调整它的单元格或实现自己的 NSTextFieldCell
并分配给文本字段。 - DarkDustPaddedTextField
,它继承自NSTextFieldCell
(所以...它可能应该被命名为PaddedTextFieldCell
,我现在可以看到...5年后 :))。这是NSTextFieldCell
的实现,用于在文本字段中使用_内部_处理带填充的文本字段的绘制。不知道这是否回答了你的问题或者我是否让你感到困惑 :) - pbodsk