【发布时间】:2010-11-12 03:17:56
【问题描述】:
这是否可以获得在标准(非自定义)Cocoa 控件中绘制的文本的坐标?实际上,我需要文本的基线,即 y 轴偏移值(相对于视图框架矩形的 y 原点)。 这就是接口构建器在选择窗格中显示的是选择窗格 - >显示选择布局矩形时。
【问题讨论】:
这是否可以获得在标准(非自定义)Cocoa 控件中绘制的文本的坐标?实际上,我需要文本的基线,即 y 轴偏移值(相对于视图框架矩形的 y 原点)。 这就是接口构建器在选择窗格中显示的是选择窗格 - >显示选择布局矩形时。
【问题讨论】:
很遗憾,没有一种解决方案适用于所有控件和单元格。您应该能够使用以下方法获得此信息的良好近似值:
-[NSCell titleRectForBounds:]
-[NSCell font]
-[NSFont ascender]
这里有一些适用于 NSButton/NSButtonCell 的代码
NSRect titleRect = [[button cell] titleRectForBounds:[button bounds]];
CGFloat baseline = ceil(NSMinY(titleRect) + [[[button cell] font] ascender]);
此时,基线位于按钮的(边界)坐标空间中。您可能希望使用 -[NSView convertPoint:toView:];
将其转换为其他空间此外,其中的“天花板”是一个近似值。并非所有控件都会这样做。有些可能会取整,或使用其他一些舍入函数。或者他们可能会以完全不同的方式布局他们的标题,而这种近似是行不通的。
【讨论】: