是否有可能在NSView(而不是NSTextView)中获得NSTextTable的所有功能?

时间:2015-03-13 12:19:24

标签: cocoa swift nsview appkit

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对象。

0 个答案:

没有答案