NSTextField奇怪的左边距

And*_*dre 0 cocoa margin objective-c nstextfield

我一直在为这一个寻找解决方案.

我有4个NSTextFields(实际上是一些自定义操作的子类),它们都共享相同的X位置.

问题是,有些人有不同的风格(浅色,普通,粗体),可能有不同的尺寸.

会发生的是,即使X原点相同,第一个字母总是有一些(始终不同的)左边距.

请参见图片:https://dl.dropbox.com/u/1977230/Screen%20Shot%202012-12-11%20at%2017.55.58.png

我想确保所有行都从同一点开始,比如从左边开始100px.

知道如何覆盖那个奇怪的填充吗?

干杯

eye*_*ire 6

你正在谈论的余量我非常确定是由lineFragmentPadding... NSTextContainer使用的NSTextField.

请参阅NSTextContainer参考:

http://developer.apple.com/library/Mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSTextContainer_Class/Reference/Reference.html

这是文本布局教程中的一个页面:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TextLayout/Concepts/CalcTextLayout.html

它在该文章中指出:

排版机在实际将文本插入矩形时进行最后一次调整.此调整是由NSTextContainer对象修复的一小部分,称为行片段填充,它将行片段矩形每端的部分定义为空白.文本在线段矩形内插入此量(矩形本身不受影响).填充允许对边缘处和任何孔周围的文本容器区域进行小规模调整,并使文本不会直接邻接区域附近显示的任何其他图形.您可以使用setLineFragmentPadding:方法更改填充的默认值.注意,线段填充不是表达边距的合适方法;

不幸的是,它看起来像NSTextFieldNSTextContainerNSLayoutManager是私人,交通不便,但现在看来他们是在访问一个NSTextView:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSTextView_Class/Reference/Reference.html#//apple_ref/occ/cl/NSTextView

因此,如果您想要对这种功能进行微小控制,那么这可能是您需要子类的类.