这是另一种使用临时
NSView方法绘制图像和文本并将结果缓存到新图像中的方法(代码为Swift 4)。您无需处理像素的好处
class ImageView : NSView { var image : NSImage var text : String init(image: NSImage, text: String) { self.image = image self.text = text super.init(frame: NSRect(origin: NSZeroPoint, size: image.size)) } required init?(prer deprer: NSCoder) { fatalError() } override func draw(_ dirtyRect: NSRect) { let font = NSFont.boldSystemFont(ofSize: 18) let textRect = CGRect(x: 5, y: 5, width: image.size.width - 5, height: image.size.height - 5) image.draw(in: dirtyRect) text.draw(in: textRect, withAttributes: [.font: font, .foregroundColor: NSColor.white]) } var outputImage : NSImage { let imageRep = bitmapImageRepForCachingDisplay(in: frame)! cacheDisplay(in: frame, to:imageRep) let tiffData = imageRep.tiffRepresentation! return NSImage(data: tiffData)! }}要使用它,初始化一个视图
let image = ... // get some imagelet view = ImageView(image: image, text: "Sample Text")
并获得新的形象
let imageWithText = view.outputImage
注意:
根本不使用段落样式,但是如果要创建可变的段落样式,只需编写
let textStyle = NSMutableParagraphStyle()



