首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSTextFieldCell标准文本绘图位置

NSTextFieldCell标准文本绘图位置
EN

Stack Overflow用户
提问于 2013-07-27 10:10:19
回答 1查看 673关注 0票数 1

是否有一种方法可以在调用:cellFrame: NSTextFieldCell中的controlView时绘制中的文本:inView:inView:?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-27 10:37:18

文本矩形是带有神秘的2px水平嵌入的titleRectForBounds:传递的cellFrame的返回值:

代码语言:javascript
复制
// 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的真实呈现位置)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17896590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档