左侧的 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
}
}
....
}
希望对你有所帮助。
如何使用 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
}
}
....
}
希望对你有所帮助。