是否有一种方法可以在调用:cellFrame: NSTextFieldCell中的controlView时绘制中的文本:inView:inView:?
发布于 2013-07-27 10:37:18
文本矩形是带有神秘的2px水平嵌入的titleRectForBounds:传递的cellFrame的返回值:
// this code ...
NSRect bounds = NSInsetRect(cellFrame, 2, 0); // dont ask me why
NSRect titleRect = [self titleRectForBounds:bounds];
[self.attributedStringValue drawInRect:titleRect];
// ... is equivalent to
[super drawInteriorWithFrame:cellFrame inView:controlView];我不知道那些2px到底代表什么,它是通过尝试所有操作系统从10.6到10.9-预览所有可能的文本字段配置而得到的。似乎总是有这个无条件的2px嵌入。通过设置断点和查看调试器反汇编,可以很容易地确认默认实现确实使用这些参数调用NSInsetRect。
我的猜测是:为了更好的排版,在开始或停止字母突出时,需要2px内嵌避免剪裁(放大和查看W或A字母相对于H或P的真实呈现位置)。
https://stackoverflow.com/questions/17896590
复制相似问题