【问题标题】:NSTextField Padding on the Left左侧的 NSTextField 填充
【发布时间】:2016-07-01 05:42:26
【问题描述】:

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

【问题讨论】:

  • NSTextField 的成员函数似乎与 UITextField 不同。
  • @NSNoob 因为它适用于 OS X?
  • @Desdenova 没错。我正在为 macOS 开发一个应用程序。当然希望它和 iOS 开发有更多的相似之处!
  • @Desdenova , pbodks, 刚刚看到 OSX 标签。对此感到抱歉。

标签: xcode swift macos nstextfield


【解决方案1】:

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的类改成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
        }
    }

    ....
}

希望对你有所帮助。

【讨论】:

  • 这仅在没有设置背景颜色或未自定义边框时有效。看到这个:stackoverflow.com/questions/37870474/…
  • wtf?答案是关于NSTextField,而不是NSTextFieldCell。我仍然无法弄清楚如何向NSTextField(不是NSTextFieldCell)添加填充
  • @fnc12:每个NSTextField都有一个NSTextFieldCell,那就是实现绘图。因此,如果您想自定义绘制文本字段,则需要调整其单元格或实现自己的 NSTextFieldCell 并将其分配给文本字段。
  • 请在文本字段中添加有关如何实现单元格的说明。谢谢
  • @Sentry.co 抱歉,我不确定我是否听懂了您的问题,请您详细说明一下:) 我有继承自 NSTextFieldCell 的PaddedTextField (所以...应该是命名为PaddedTextFieldCell 我现在可以看到... 5 年后:))。那是NSTextFieldCell 的实现,它用于inside NSTextField 处理带有填充的文本字段的绘制。不知道这是否回答了您的问题,或者我设法使您感到困惑:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
相关资源
最近更新 更多