gpt4 book ai didi

objective-c - 为什么 usesSingleLineMode 设置为 YES 的 NSTextField 具有多行文本的固有内容大小?

转载 作者:行者123 更新时间:2023-11-28 13:51:18 26 4
gpt4 key购买 nike

我想用默认边框绘制单行文本框。

所以我在其中输入了一些多行文本(只是为了测试 future 的情况)并设置标志

swift :

textfield.usesSingleLineMode = true
textfield.maximumNumberOfLines = 1

Objective-C :

self.textfield.usesSingleLineMode = YES;
self.textfield.maximumNumberOfLines = 1;

但是我进入了控制台:

(lldb) po self.textfield.intrinsicContentSize
(width = 511.5, height = 174)

enter image description here

我已经测试了所有 lineBreakMode s,包括 NSLineBreakByTruncatingTail . enter image description here

这是 IB 中的一个字段: enter image description here

当然可以:

  • 重载intrinsicContentSize方法
  • 过滤字符串只保留第一行

但它看起来像一个拐杖=(你有没有想法如何在没有拐杖的情况下修复它?你认为这是一个 AppKit 错误还是我的错误?

PS无论如何,感谢您的关注。

最佳答案

这不是错误。默认情况下,NSTextField 试图显示尽可能多的文本。我制作了一个示例应用程序,其中在 NSTextField 的标题中包含一长串文本。将其设置为“使用单行模式”并将换行符设置为“截尾”。我在 View 上设置了前导、顶部和尾随布局约束。现在当我在文本字段中输入文本时,它会使窗口的水平宽度非常宽。这是实际的自动布局。

Truncated text field in single line mode

要解决此问题,您需要选择 NSTextField,选择大小检查器并将水平内容压缩阻力优先级设置为较低的数字。在示例应用程序中,我将其从 750 更改为低 (250)。

Size inspector

将内容 View 调整到可接受的大小,您就可以开始比赛了。

关于objective-c - 为什么 usesSingleLineMode 设置为 YES 的 NSTextField 具有多行文本的固有内容大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54575962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com