如何将NSTextView限制在2行内?

9

我正在尝试指定NSTextView的行数。我的设计师要求最多2行文本。我已经尝试使用NSMutableParagraph样式来添加所需的省略号截断,但是使用NSMutableParagraph时,我只能得到包含1行的NSTextView;而不使用NSMutableParagraph,则会得到一个带有滚动条的文本框,文本框中包含完成文本所需的所有行。

var attributedString = NSMutableAttributedString(string: "This is my text, I can keep going for many characters")
var para = NSMutableParagraphStyle()
para.lineBreakMode = NSLineBreakMode.ByTruncatingTail
let globalAttributes = [
  NSParagraphStyleAttributeName: para
]
let range = NSRange(location:0, length: attributedString.length)
attributedString.addAttributes(globalAttributes, range: range)
cellView.myTextView!.textStorage?.setAttributedString(attributedString)

我试过在NSTextView上使用高度约束。我尝试了:

cellView.myTextView!.textContainer?.containerSize = NSMakeSize(300, 32)

我尝试创建一个IBOutlet来调整包含NSTextView的NSScrollView的高度,但无法同时显示两行和截断。非常感谢任何帮助。我觉得我可能只是缺少某个方法或设置。谢谢!


你考虑过使用文本字段吗?你可以设置文本字段单元格的truncatesLastVisibleLine属性。另外,你需要允许编辑但防止用户输入超过两行所能容纳的文本吗?对于文本视图,你设置了verticallyResizable为false吗?你设置了maxSize吗? - Ken Thomases
@KenThomases,是的,我考虑过使用文本框。实际上,我在这个视图上为另一个属性使用了NSTextField。文本框只显示一行。对于textView,我尝试将verticallyResizable设置为false并设置maxSize。 - myData
1
您可以创建多行文本字段。 - Ken Thomases
此外,这些字段不应由用户进行编辑,它们仅显示从API获取的数据。 - myData
我能通过编程解决此问题: let cell = cellView.myLabel!.cell() as! NSTextFieldCellcell.wraps = true cell.scrollable = false - myData
显示剩余3条评论
4个回答

11

从10.11版本开始,您可以使用此功能。

yourTextViewObj.textContainer.maximumNumberOfLines = 2;

10

您可以使用一个配置为多行标签的NSTextField。这意味着将其cellwraps属性设置为true,并且如果需要,将其truncatesLastVisibleLine设置为true。


1
另外,还需要设置最大行数。 - Bharat Nakum

1
对于NSTextField(也称为标签),您只需执行self.textField.maximumNumberOfLines = 2;即可。
就是这样。

另外,还需要单元格的换行属性。 - Bharat Nakum

0

最大行数现在是NSTextField的属性

label.maximumNumberOfLines = 1;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接