NSTextField sizeToFit或帧更新将文本移到左侧

Ben*_*hoz 6 macos cocoa resize nstextfield

sizeToFit在NSTextField上的方法有一个奇怪的问题.

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

图层和文本字段的帧都定位良好(原点不移动).

任何线索都将受到高度赞赏.

文字转换

EDIT 帧更新具有相同的行为,即使不使用sizeToFit也是如此.

有时它在插入空间时会移动,或者有时在插入空间时会回到其想要的位置.

底层不会从其原点移动.

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

我们不能访问的NSTextField的容器,所以大的值调用一个帧更新或之前添加到字符串(根据字体的大小)的宽度[self sizeThatFits:stringSize];[self sizeToFit];.

Ast*_*ria 2

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

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

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

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