标签和 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)
在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)