绘制 NSTextField 设置内容 NSRect
Draw NSTextField setting the content NSRect
给定一个结构 Concept
,它有一个关联的 text: String
和 area: NSRect
,当在视图上绘制时,它将在给定的 [= 中绘制 String
15=].
我想在点击时,显示 NSTextField
其中 "content" (单元格)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
进行比较。绘图矩形将从边界插入一点。要计算一个框架以获得特定的绘图矩形,您可以将其从所需的绘图矩形中反转 "outsetting" 相同的数量。
给定一个结构 Concept
,它有一个关联的 text: String
和 area: NSRect
,当在视图上绘制时,它将在给定的 [= 中绘制 String
15=].
我想在点击时,显示 NSTextField
其中 "content" (单元格)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
进行比较。绘图矩形将从边界插入一点。要计算一个框架以获得特定的绘图矩形,您可以将其从所需的绘图矩形中反转 "outsetting" 相同的数量。