如何在SwiftSignatureView生成的UIImage中添加日期、位置与名称?
解决SwiftSignatureView添加日期、位置和名称的问题
一、手动给签名图片添加文本信息
SwiftSignatureView本身没有内置的附加信息添加API,但你可以借助Core Graphics,在生成的签名UIImage上手动绘制日期、位置和名称。下面是一个实用的UIImage扩展方法,帮你快速实现需求:
import UIKit extension UIImage { func addSignatureMetadata(date: String, location: String, name: String) -> UIImage? { // 给原图片底部预留文本空间,可根据需求调整高度 let extraSpaceHeight: CGFloat = 80 let newCanvasSize = CGSize(width: self.size.width, height: self.size.height + extraSpaceHeight) UIGraphicsBeginImageContextWithOptions(newCanvasSize, false, self.scale) defer { UIGraphicsEndImageContext() } // 先绘制原签名图片 self.draw(in: CGRect(origin: .zero, size: self.size)) // 设置文本样式,可自定义字体、颜色 let textAttributes: [NSAttributedString.Key: Any] = [ .font: UIFont.systemFont(ofSize: 14), .foregroundColor: UIColor.darkGray ] // 计算各文本的绘制位置并渲染 let dateRect = CGRect(x: 16, y: self.size.height + 8, width: newCanvasSize.width - 32, height: 20) date.draw(in: dateRect, withAttributes: textAttributes) let locationRect = CGRect(x: 16, y: self.size.height + 32, width: newCanvasSize.width - 32, height: 20) location.draw(in: locationRect, withAttributes: textAttributes) let nameRect = CGRect(x: 16, y: self.size.height + 56, width: newCanvasSize.width - 32, height: 20) name.draw(in: nameRect, withAttributes: textAttributes) // 返回添加了信息的最终图片 return UIGraphicsGetImageFromCurrentImageContext() } }
使用时,只需拿到SwiftSignatureView的签名图片后调用这个方法:
if let originalSignature = signatureView.signatureImage { let currentDate = DateFormatter.localizedString(from: Date(), dateStyle: .medium, timeStyle: .short) let locationLabel = "Location: San Francisco, CA" let signerName = "Signed by: Jane Smith" let finalImageWithMetadata = originalSignature.addSignatureMetadata(date: currentDate, location: locationLabel, name: signerName) // 对finalImageWithMetadata进行保存、展示等后续操作 }
这种方式完全可控,你可以根据需求调整文本的位置、样式,甚至添加分割线、logo等额外元素。
二、支持附加信息的替代签名库
如果不想手动处理,也可以考虑这些功能更全面的签名库:
- SignaturePad: 一款功能成熟的签名库,支持在签名区域下方直接添加自定义文本(如日期、签名者名称),也能轻松扩展生成带附加信息的图片,API设计灵活易上手。
- PencilKit: 苹果官方的绘图框架,虽不是专门的签名库,但可以用来创建签名,并且能自由在画布上添加文本、形状等元素,适配iOS 13+,支持Apple Pencil,交互体验流畅。
- SwiftSignatureCapture: 轻量级签名库,支持自定义签名区域样式,通过简单扩展就能给输出图片添加文本信息,适合小型项目快速集成。
内容的提问来源于stack exchange,提问作者Neneil
相关产品推荐
相关产品推荐

