2

这是否可以获得在标准(非自定义)Cocoa 控件中绘制的文本的坐标?实际上,我需要文本的基线,即 y 轴偏移值(相对于视图框架矩形的 y 原点)。这是接口构建器在设计窗格上显示的内容 - >“布局” - >显示布局矩形。

4

1 回答 1

2

不幸的是,没有适用于所有控件和单元格的单一解决方案。您应该能够使用以下方法获得此信息的良好近似值:

-[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:]; 将其转换为其他空间。

此外,那里的“天花板”是一个近似值。并非所有控件都会这样做。有些可能会取整,或使用其他一些舍入函数。或者他们可能会以完全不同的方式布局他们的标题,而这种近似是行不通的。

于 2009-07-19T20:20:04.000 回答