截断标签中的文本
Truncate text in label
我正在尝试在单行标签上使用 "Truncate Middle"。我检查了 "Uses Single Line Mode",将布局设置为 "Truncates",将换行符设置为 "Truncate Middle",并将文本字段的首选宽度设置为 "First Runtime Layout Width",并将内容拥抱优先级设置为 250。
这是我尝试启用截断的带有
标签的布局:
在我的 ViewController:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
titleLabel.stringValue = "This is a very very long title that should be truncated because it would enlarge the window unnecessary!"
}
不起作用,window 被放大以显示完整的标题,用户无法缩小其宽度。
奇怪的是,如果我将布局和换行符从 "Truncates"/"Truncate Middle" 更改为 "Wraps"/"Character Wrap",它工作正常,但没有中间截断。
我希望 truncate 像这样工作:
This is a very very long text...rge the window unnecessary!
也许我遗漏了什么?
编辑: 下面是测试问题的示例项目:https://nofile.io/f/9s9OJXHaaw1/TestTruncate.zip
对于截断中间,您还必须将对齐方式设置为居中。
这是一件很简单的事情。只需在 override func viewDidLoad()
中添加这一行
yourLabel.lineBreakMode = .byTruncatingMiddle
或者您也可以从 Interface Builder 中进行设置。 Select 您的标签并将 Line Break
设置为 Truncate Middle
。
如果您为 NSTextView
和周围的 NSView
使用自动布局,则应将 NSTextView
的 Content Compression Resistance Priority 设置得更少比 NSLayoutPriorityWindowSizeStayPut
(例如 499)。否则您的 NSTextView
将不会截断其内容。 (Reference)
我可以通过将 Horizontal
的 Content Compression Resistance Priority
从 500
设置为 499
来实现这一点。
您可以通过选择您的标签 -> 大小检查器 -> 内容压缩阻力优先
给我以下输出:
我正在尝试在单行标签上使用 "Truncate Middle"。我检查了 "Uses Single Line Mode",将布局设置为 "Truncates",将换行符设置为 "Truncate Middle",并将文本字段的首选宽度设置为 "First Runtime Layout Width",并将内容拥抱优先级设置为 250。
这是我尝试启用截断的带有
在我的 ViewController:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
titleLabel.stringValue = "This is a very very long title that should be truncated because it would enlarge the window unnecessary!"
}
不起作用,window 被放大以显示完整的标题,用户无法缩小其宽度。
奇怪的是,如果我将布局和换行符从 "Truncates"/"Truncate Middle" 更改为 "Wraps"/"Character Wrap",它工作正常,但没有中间截断。
我希望 truncate 像这样工作:
This is a very very long text...rge the window unnecessary!
也许我遗漏了什么?
编辑: 下面是测试问题的示例项目:https://nofile.io/f/9s9OJXHaaw1/TestTruncate.zip
对于截断中间,您还必须将对齐方式设置为居中。
这是一件很简单的事情。只需在 override func viewDidLoad()
yourLabel.lineBreakMode = .byTruncatingMiddle
或者您也可以从 Interface Builder 中进行设置。 Select 您的标签并将 Line Break
设置为 Truncate Middle
。
如果您为 NSTextView
和周围的 NSView
使用自动布局,则应将 NSTextView
的 Content Compression Resistance Priority 设置得更少比 NSLayoutPriorityWindowSizeStayPut
(例如 499)。否则您的 NSTextView
将不会截断其内容。 (Reference)
我可以通过将 Horizontal
的 Content Compression Resistance Priority
从 500
设置为 499
来实现这一点。
您可以通过选择您的标签 -> 大小检查器 -> 内容压缩阻力优先
给我以下输出: