Ben*_*hoz 6 macos cocoa resize nstextfield
我sizeToFit在NSTextField上的方法有一个奇怪的问题.
我有一个NSView,我正在创建一个CALayer和一个NSTextField.我sizeToFit根据字段值使用该方法调整CALayer的大小.它运作良好,但是当我插入一个空格时,文本在场的框架内左移(见下图).
图层和文本字段的帧都定位良好(原点不移动).
任何线索都将受到高度赞赏.

EDIT 帧更新具有相同的行为,即使不使用sizeToFit也是如此.
有时它在插入空间时会移动,或者有时在插入空间时会回到其想要的位置.
底层不会从其原点移动.
编辑 看起来NSTextField的容器需要足够的空间来显示.我发现它实际上需要很多空间.
我们不能访问的NSTextField的容器,所以大的值调用一个帧更新或之前添加到字符串(根据字体的大小)的宽度[self sizeThatFits:stringSize];和[self sizeToFit];.
我认为 -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.
| 归档时间: |
|
| 查看次数: |
1316 次 |
| 最近记录: |