我在NSTextField上遇到sizeToFit
方法的奇怪问题。
我有一个NSView,我在这里创建了一个CALayer和一个NSTextField。我使用sizeToFit
方法根据字段值调整CALayer的大小。效果很好,但是当我插入一个空格时,文字会在字段框架内左移(见下图)。
图层和文本字段的框架都定位良好(原点不移动)。
对此的任何线索都将受到高度赞赏。
修改 帧更新具有相同的行为,即使不使用sizeToFit。
有时它会在插入空间时移动,或者有时候在插入空间时会回到其想要的位置。
底层不会从其原点移动。
修改 看起来NSTextField的容器需要足够的空间来显示。 我发现它实际上需要很多空间。
我们无法访问NSTextField的容器,因此我在调用帧更新或[self sizeThatFits:stringSize];
之前向字符串的宽度添加一个较大的值(取决于字体的大小){ {1}}。
答案 0 :(得分:1)
我认为-sizeToFit
- 方法不需要。布局执行时会自动调用它。如果您需要调整NSTextField
- 实例的大小,请将其子类化并覆盖-intrinsicContentSize
- 方法。
我在文本字段的末尾用"淡出" -text掩码使用了这种方法。使用自动布局和内在内容大小,即使在父视图上有足够的空间进行布局,我的文本字段也始终使用该掩码。
- (CGSize)intrinsicContentSize
{
CGSize size=[super intrinsicContentSize];
// adjust size somehow (or may be not)
return(size);
}
每次您需要更新"文本字段大小(在输入?时),调用-invalidateIntrinsicContentSize
。