NSTextTable
和关联的类NSTextTableBlock
主要在Apple文档中NSTextView
的上下文中讨论。
是否可以在NSTextTable
容器中获取NSView
和朋友的全部功能?我问,因为在将格式正确的NSAttributedString
附加到NSView
时,我看到了奇怪的结果。请参阅以下代码:
class View: NSView {
@IBOutlet weak var controller:ViewController!
var textStorage:NSTextStorage!
var layoutManager:NSLayoutManager!
var textContainer:NSTextContainer!
override func awakeFromNib() {
self.textStorage = NSTextStorage()
self.layoutManager = NSLayoutManager()
self.textContainer = NSTextContainer(containerSize: self.frame.size)
self.textStorage.addLayoutManager(layoutManager)
self.layoutManager.addTextContainer(textContainer)
self.textStorage.appendAttributedString(self.controller.tableString)
}
override func drawRect(dirtyRect: NSRect) {
super.drawRect(dirtyRect)
layoutManager.ensureLayoutForTextContainer(textContainer)
let glyphRange = layoutManager.glyphRangeForTextContainer(textContainer)
println(textStorage.string)
println(glyphRange)
layoutManager.drawGlyphsForGlyphRange(glyphRange, atPoint: NSMakePoint(10, 10))
}
override var flipped:Bool{
return true
}
}
**什么有效:**绘制单元格中的文本 **什么不起作用:**背景&边框未绘制
使用NSAttributableString
执行相同的过程(同样格式正确的NSTextView
)会绘制背景和边框。 NSTextView
进程要简单得多,因为您只需要附加NSTextStorage
对象。