使用 iOS 个图表将图片保存到相机胶卷

Saving pictures to Camera roll with iOS charts

我试图将我使用 iOS 图表 api 创建的图表保存到相机胶卷。仅存在以下功能:

private func saveButton() {
    barChartView.save(to: STRING, format: ChartViewBase.ImageFormat, compressionQuality: Double)
}

我应该为 "to" 输入哪个值?

试试这个

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)

我不知道相机胶卷的路径是什么,但也许只是改变路径 并且可以工作

最后,我找到了另一个解决方案:

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 中实现,由 PageViewController

调用

您可以使用与图表相同的功能。

     let image = chartView.getChartImage(transparent: false)
     UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)

上面的答案都是正确的,但是请确保当您执行 运行 保存到相机胶卷的代码时,例如:

    let graphImage = myGraph.getChartImage(transparent: false)
    UIImageWriteToSavedPhotosAlbum(graphImage!, nil, nil, nil)

您已添加 NSPhotoLibraryAddUsageDescription 的要求("Privacy - Photo Library Additions Usage Description",自 iOS 11[=31= 以来,现在 需要]) 和 NSPhotoLibraryUsageDescription(“Privacy - Photo Library Usage Description”) 以及你想向用户显示的字符串文本(解释为什么你需要保存到相机胶卷).

这些要求应该添加到您的 Info.plist 文件中,在您的 Xcode 项目中。

否则,当您 运行 任何将项目保存到相机胶卷的代码时,您的应用程序将会崩溃。

我已附上屏幕截图以显示其外观:

您可以找到有关 Info.plist 要求的更多信息 here