我正试图想办法让我的iOS应用程序将屏幕截图保存到相机胶卷,然后弹出警告,告诉用户屏幕截图已成功保存。我能想到的唯一方法就是使用某种形式的if / else循环(正如你在下面我的伪代码注释中看到的那样),但我想不出任何语法可以使用UIKit的UIImageWriteToSavedPhotosAlbum函数。有什么建议吗?
func screenshotMethod()
{
UIGraphicsBeginImageContextWithOptions(HighchartsView.scrollView.contentSize, false, 0);
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(image, nil,nil, nil)
//if saved to Camera Roll
// {
// confirmScreenshot()
// }
//
//else
// {
// exit code/stop
// }
}
func confirmScreenshot()
{
let alertController = UIAlertController(title: "Success", message: "This chart has been successfully saved to your Camera Roll.", preferredStyle: .Alert)
let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil)
alertController.addAction(defaultAction)
presentViewController(alertController, animated: true, completion: nil)
}
答案 0 :(得分:0)
从reference documentation您可以看到有一个completionTarget
和一个completionSelector
,这是一种基本授权(因为它没有强制执行某种协议,您的班级有符合,用作授权目标)。例如,您将在类中实现一个符合completionSelector
定义的指定签名的函数,然后将self
作为completionTarget
传递,将函数名称传递为completionSelector
。< / p>
在你的情况下,这将是:
func screenshotMethod()
{
UIGraphicsBeginImageContextWithOptions(HighchartsView.scrollView.contentSize, false, 0);
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(image, self, "didSaveScreenshot:", nil)
}
func didSaveScreenshot(image: UIImage?, didFinishSavingWithError error: NSError?, contextInfo contextInfo: AnyObject?)
{
if let error = error {
//Not successful
} else {
//Success
}
}
注意:我没有对此进行测试,但它应该可行。唯一的问题是,我不知道如何将一个void指针从Objective-C移植到Swift,所以每个人都可以在这里纠正我。