我尝试将使用iOS Charts api创建的图形保存到相机胶卷。只存在以下功能:
private func saveButton() {
barChartView.save(to: STRING, format: ChartViewBase.ImageFormat, compressionQuality: Double)
}
我应该为“到”输入哪个值?
试试这个
let a = barChartView.save(to: "\(AppDelegate.getAppDelegate().getDocDir())/chart.png", format: BarLineChartViewBase.ImageFormat.png, compressionQuality: 1.0)
您可以为“to”输入的值是保存图表的路径。
在以前的版本中存在2种方法
barChartView.saveToCameraRoll()
barChartView.saveToPath(path: String, format: ChartViewBase.ImageFormat, compressionQuality: Double)
现在只是存在
barChartView.save(to: STRING, format: ChartViewBase.ImageFormat, compressionQuality: Double)
我不知道相机胶卷的路径是什么,但也许只是改变路径并且可以工作
您可以使用图表使用的相同功能。
let image = chartView.getChartImage(transparent: false)
UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
最后,我找到了另一个解决方案
public func saveGraph() {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, UIScreen.main.scale)
view.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
}
此代码实现在ViewController中,该ViewController由PageViewController调用
上面的答案都是正确的,但是请确保在运行保存到相机胶卷的代码时,例如:
let graphImage = myGraph.getChartImage(transparent: false)
UIImageWriteToSavedPhotosAlbum(graphImage!, nil, nil, nil)
您已经添加了NSPhotoLibraryAddUsageDescription(“隐私 - 照片库添加使用说明”,现在需要iOS 11)和NSPhotoLibraryUsageDescription(“隐私 - 照片库使用说明”)以及您要显示的字符串文本的要求给用户(解释为什么需要保存到相机胶卷)。
这些要求应该添加到Xcode项目中的Info.plist文件中。
否则,当您运行将项目保存到相机胶卷的任何代码时,您的应用程序将崩溃。
我附上了一个屏幕截图,展示了它的外观:
您可以找到有关Info.plist要求here的更多信息。