gpt4 book ai didi

macos - NSTextField sizeToFit 或框架更新将文本向左移动

转载 作者:行者123 更新时间:2023-12-03 16:09:38 25 4
gpt4 key购买 nike

我在 NSTextField 上的 sizeToFit 方法上遇到了一个奇怪的问题。

我有一个 NSView,我正在其中创建一个 CALayer 和一个 NSTextField。我使用 sizeToFit 方法根据字段值调整 CALayer 的大小。它运行良好,但是当我插入空格时,文本会在字段框架内向左移动(见下图)。

图层和文本字段的框架都定位良好(原点未移动)。

任何有关此的线索将不胜感激。

text shift

编辑即使不使用 sizeToFit,帧更新也具有相同的行为。

有时插入空格时它会移动,或者有时插入空格时它会回到所需的位置。

底层不会从其原点移动。

编辑看来 NSTextField 的容器需要足够的空间来显示。我发现它实际上需要很大的空间。

我们无法访问 NSTextField 的容器,因此我在调用帧更新或 [self sizeThatFits:stringSize] 之前向字符串的宽度添加一个较大的值(取决于字体的大小) ;[self sizeToFit];

最佳答案

我认为没有必要使用-sizeToFit方法。布局执行时会自动调用它。如果您需要调整 NSTextField 实例的大小,请将其子类化并覆盖 -intrinsicContentSize-方法。

我在文本字段末尾使用了“淡出”文本掩码的方法。使用自动布局和内在内容大小,即使父 View 上有足够的布局空间,我的文本字段始终带有该掩码。

- (CGSize)intrinsicContentSize
{
CGSize size=[super intrinsicContentSize];
// adjust size somehow (or may be not)
return(size);
}

每次需要“更新”文本字段大小(在键入时?)时,请调用 -invalidateIntrinsicContentSize

关于macos - NSTextField sizeToFit 或框架更新将文本向左移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29623902/

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