【问题标题】:YPDrawSignatureView, Capturing/Saving a Signature in an iOS AppYPDrawSignatureView,在 iOS 应用程序中捕获/保存签名
【发布时间】:2015-08-31 01:49:26
【问题描述】:

我在 Github (https://github.com/yuppielabel/YPDrawSignatureView) 上使用 YPDrawSignatureView 自定义类,我将我的应用程序设置为以模态方式呈现一个新视图,该视图能够签署您的姓名并保存/取消图像。

我在课堂上使用默认的保存功能,但我完全不知道它是如何工作的或保存到哪里。

这是该函数的代码:

       // MARK: Save the Signature as an UIImage
func getSignature() ->UIImage {
    UIGraphicsBeginImageContext(CGSizeMake(self.bounds.size.width, self.bounds.size.height))
    self.layer.renderInContext(UIGraphicsGetCurrentContext())
    var signature: UIImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return signature
}

我是这样称呼它的:

        @IBAction func saveButton(sender: UIButton) {
    SignatureImage = signatureCaptureField!.getSignature()
    dismissViewControllerAnimated(true, completion: nil)
}

我希望将该签名保存为图像,并使其显示在应用程序的主视图中(作为表单的签名)。它保存在哪里以及从哪里以及如何在该视图中访问它?

谢谢!

【问题讨论】:

    标签: ios image swift github uigraphicscontext


    【解决方案1】:

    getSignature() 应该返回 UIImage。这是存储的签名图像。

    @IBAction func saveButton(sender: UIButton) {
        let image = signatureCaptureField!.getSignature()
        dismissViewControllerAnimated(true, completion: nil)
    }
    

    你可以访问图片的NSData并保存:

    var imageData = UIImagePNGRepresentation(image)
    let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
    let destinationPath = documentsPath.stringByAppendingPathComponent("filename.png")
    imageData.writeToFile(destinationPath, atomically: true)
    

    或者创建一个 UIImageView 来显示给用户:

    let imageView = UIImageView(image: image)
    imageView.sizeToFit()
    view.addSubview(imageView)
    

    【讨论】:

    • 所以如果我要使用第二个选项,制作一个 UImageView,我必须让它出现在主视图上。这可以通过在模态呈现的签名捕获视图中创建它来实现,然后在它被关闭后将其可见性设置为隐藏,还是我必须在我想要显示它的另一个视图中创建它?
    • 不要让代码驱动你。驱动代码做你想做的事。无论您想在什么视图中显示它,只需致电addSubview。你可以把它放在任何视图中。只需将image 传递给将处理查看的类。
    • 结果现在是可选的,如果确实有一个签名,它只会返回一个签名。还有传递视图状态的委托方法/协议函数,以及用于检查视图是否包含签名的 bool 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多