给定具有关联的Concept
和text: String
的结构area: NSRect
,在视图上绘制该结构时,它将在给定的String
中绘制NSRect
。
我想单击一下,显示一个NSTextField
哪个“内容”(单元格)NSRect等于给定的NSRect
如果我尝试设置textField.frame = concept.area
,则考虑到NSTextField
的边框和填充,单元格将以插入位置呈现,因此它将以不同的略微移动的NSRect呈现文本。
在代码中,这个想法就像
struct Concept {
let text: String
let area: NSRect
func draw() {
text.draw(inRect: area)
}
}
let conceptRect = NSRect(x: 50, y: 60, width: 80, height: 20)
let concept = Concept(text: "sample text", area: conceptRect)
let textField = NSTextField()
textField.stringValue = concept.text
textField.???? = area
let textFieldRect = textField.frame
assert(textFieldRect != conceptRect)
assert(textFieldRect.contains(conceptRect))
预期结果应如下所示:
关于如何实现这一目标的任何想法?
谢谢
最佳答案
您无需说明如何在area
中绘制字符串,这可能会影响确切的绘制位置。
如果要弄清楚文本字段的边框填充是什么,可以将其cell
的drawingRect(forBounds:)
与文本字段的bounds
进行比较。绘图rect将从边界开始插入一点。要计算框架以获得特定的绘图矩形,您可以通过从所需的绘图矩形“偏移”相同的数量来反转帧。
关于swift - 绘制NSTextField设置内容NSRect,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43922735/