左侧的 NSTextField 填充

NSTextField Padding on the Left

如何使用 swift 在文本字段单元格的文本左侧添加填充?以前的答案仅适用于 UITextField 或 Objective C。需要明确的是,这是针对 NSTextField 的。

Here 是在 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)
    }
}

我已将填充添加为 @IBInspectable 属性。这样您就可以在 Interface Builder 中随意设置它了。

与界面生成器一起使用

要使用新的 PaddedTextFieldCell,请将常规 Text Field 拖到 xib 文件中

然后把里面TextFieldCell的class改成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
        }
    }

    ....
}

希望对你有所帮助。