我知道在主应用程序和小部件之间共享数据是使用NSUserDefaults或CoreData,但不建议使用它们来共享图像。要存储用户生成的图片,应用应该使用应用的文档目录,但无法从窗口小部件访问,那么应用应该如何与其共享图像?
答案 0 :(得分:0)
我使用共享应用程序组目录来保存图像并从容器应用程序和扩展程序访问它,这里是代码。
保存图片
public func saveImage(image:UIImage){
let fileManager = FileManager.default
let directory = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "yourappgroup")?.appendingPathComponent("yourImagename.jpg")
let imageData = UIImageJPEGRepresentation(image, 1)
fileManager.createFile(atPath: (directory?.path)!, contents: imageData, attributes: nil)
}
获取已保存的图片
public func saveImage() -> UIImage {
let fileManager = FileManager.default
if let imagePath = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "yourappgroup")?.appendingPathComponent("yourImagename.jpg").path {
if fileManager.fileExists(atPath: imagePath){
return UIImage(contentsOfFile: imagePath)
}else{
print("No Image")
return nil
}
}