You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:13:22