截断标签中的文本

Truncate text in label

我正在尝试在单行标签上使用 "Truncate Middle"。我检查了 "Uses Single Line Mode",将布局设置为 "Truncates",将换行符设置为 "Truncate Middle",并将文本字段的首选宽度设置为 "First Runtime Layout Width",并将内容拥抱优先级设置为 250。

这是我尝试启用截断的带有 标签的布局: <WBIMG:2935935-1.png></p> <p>在我的 ViewController:</p> <pre><code>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!" } </code></pre> <p>不起作用,window 被放大以显示完整的标题,用户无法缩小其宽度。</p> <p>奇怪的是,如果我将布局和换行符从 "Truncates"/"Truncate Middle" 更改为 "Wraps"/"Character Wrap",它工作正常,但没有中间截断。 </p> <p><WBIMG:2935935-2.png></p> <p>我希望 truncate 像这样工作:</p> <blockquote> <p>This is a very very long text...rge the window unnecessary!</p> </blockquote> <p>也许我遗漏了什么?</p> <p><strong>编辑:</strong> 下面是测试问题的示例项目:<a href="https://nofile.io/f/9s9OJXHaaw1/TestTruncate.zip" rel="nofollow noreferrer">https://nofile.io/f/9s9OJXHaaw1/TestTruncate.zip</a></p> </section> <div> <section class="answer"> <p>对于截断中间,您还必须将对齐方式设置为居中。</p> </section> <section class="answer"> <p>这是一件很简单的事情。只需在 <code>override func viewDidLoad()</code></p> 中添加这一行 <pre><code> yourLabel.lineBreakMode = .byTruncatingMiddle </code></pre> <p>或者您也可以从 Interface Builder 中进行设置。 Select 您的标签并将 <code>Line Break</code> 设置为 <code>Truncate Middle</code>。</p> <p><WBIMG:7636978-1.png></p> </section> <section class="answer"> <p>如果您为 <code>NSTextView</code> 和周围的 <code>NSView</code> 使用自动布局,则应将 <code>NSTextView</code> 的 <strong>Content Compression Resistance Priority</strong> 设置得更少比 <code>NSLayoutPriorityWindowSizeStayPut</code>(例如 499)。否则您的 <code>NSTextView</code> 将不会截断其内容。 (<i>Reference</i>)</p> <p>我可以通过将 <code>Horizontal</code> 的 <code>Content Compression Resistance Priority</code> 从 <code>500</code> 设置为 <code>499</code> 来实现这一点。 </p> <p>您可以通过选择您的标签 -> 大小检查器 -> 内容压缩阻力优先</p> <p><WBIMG:7652924-1.png></p> <p>给我以下输出:</p> <p><WBIMG:7652924-2.png></p> </section> </div> </div> <div class="line"></div> <div id="footer">©2023 WhoseBug</div> </body> </html>