标签和 macOS 中的行数

Number of lines in a label and macOS

iOS中我们可以控制Storyboard > Attributes > Number of lines中的行数。我们可以把 0 做成一个不确定的数字,然后标签适应内容。

也以编程方式:label1.numberOfLines = 0

我在 macOS 中没有看到等效项。如果我想创建一个新行,我可以选择在 Storyboard 中手动输入。但是,如果文本动态变化,这并不能解决问题。

如何制作多行,让标签适应macOS中的内容?

您可以在 Xcode 界面生成器中检查以下属性:

  • 从布局中选择'Wraps'
  • 从换行符中选择 'Character Wrap'(或自动换行)
  • 必须取消选中选项 'Uses Single Line Mode'

以编程方式(关键是使用 NSTextField 的底层单元格):

let textfield: NSTextField = NSTextField(wrappingLabelWithString: "This is a very long text that requires a line break.")
textfield.frame = NSRect(x: 0.0, y: 0.0, width: 128.0, height: 96.0)
(textfield.cell as? NSTextFieldCell)?.isEditable = false
(textfield.cell as? NSTextFieldCell)?.wraps = true
(textfield.cell as? NSTextFieldCell)?.usesSingleLineMode = false
(textfield.cell as? NSTextFieldCell)?.lineBreakMode = NSLineBreakMode.byWordWrapping

self.view.addSubview(textfield)