You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MyQRCode/docs/QRCODE_STYLE_HISTORY_INTEGR...

4.5 KiB

二维码样式数据集成到历史记录功能

概述

本次更新成功将二维码样式数据集成到历史记录系统中,使用户可以保存和查看自定义二维码的样式信息。

功能特性

1. 样式数据保存

  • 在创建自定义二维码时,自动保存样式配置信息
  • 包括前景色、背景色、点类型、眼睛类型、Logo等样式参数
  • 支持自定义Logo和预设Logo的区分

2. 历史记录显示

  • 在历史记录列表中显示"自定义样式"标签
  • 区分标准二维码和自定义样式二维码
  • 提供直观的视觉标识

3. 详情页面展示

  • 在二维码详情页面显示完整的样式信息
  • 包括颜色、点类型、眼睛类型、Logo等详细信息
  • 提供中文显示名称,提升用户体验

技术实现

1. 数据模型扩展

QRCodeStyleData 类

@objc(QRCodeStyleData)
public class QRCodeStyleData: NSObject, NSSecureCoding {
    public let foregroundColor: String
    public let backgroundColor: String
    public let dotType: String
    public let eyeType: String
    public let logo: String?
    public let hasCustomLogo: Bool
    
    // 支持NSSecureCoding用于Core Data存储
}

Core Data 模型更新

  • HistoryItem 实体中添加 qrCodeStyleData 属性
  • 类型为 Transformable,支持复杂对象存储
  • 使用 NSSecureUnarchiveFromData 转换器

2. 样式数据保存

QRCodeStyleView 修改

private func saveToHistory() {
    // 创建样式数据对象
    let styleData = QRCodeStyleData(
        foregroundColor: selectedForegroundColor.rawValue,
        backgroundColor: selectedBackgroundColor.rawValue,
        dotType: selectedDotType.rawValue,
        eyeType: selectedEyeType.rawValue,
        logo: selectedLogo?.rawValue,
        hasCustomLogo: customLogoImage != nil
    )
    
    // 保存到历史记录
    historyItem.qrCodeStyleData = styleData
}

3. 历史记录显示

HistoryView 修改

  • HistoryItemRow 中添加样式标签显示
  • 当存在样式数据时显示"自定义样式"标签
  • 使用紫色主题色区分样式信息

QRCodeDetailView 修改

  • 添加专门的样式信息展示区域
  • 显示颜色、点类型、眼睛类型、Logo等详细信息
  • 提供中文显示名称转换

4. 辅助功能

显示名称转换

extension QRCodeDetailView {
    private func getColorDisplayName(_ colorString: String) -> String
    private func getDotTypeDisplayName(_ dotTypeString: String) -> String
    private func getEyeTypeDisplayName(_ eyeTypeString: String) -> String
    private func getLogoDisplayName(_ logoString: String) -> String
}

用户界面改进

1. 历史记录列表

  • 添加"自定义样式"标签,使用紫色主题
  • 图标使用 paintpalette 表示样式信息
  • 与现有标签保持一致的视觉风格

2. 详情页面

  • 新增"样式信息"区域,位于解析信息之后
  • 详细展示所有样式参数
  • 支持标准样式和自定义样式的区分显示

3. 视觉设计

  • 使用统一的颜色主题
  • 保持与现有界面的一致性
  • 提供清晰的视觉层次

数据流程

1. 创建流程

用户创建二维码 → 选择样式 → 保存 → 样式数据保存到历史记录

2. 查看流程

历史记录列表 → 点击自定义样式项目 → 详情页面显示样式信息

3. 数据存储

QRCodeStyleData → Core Data → HistoryItem.qrCodeStyleData

兼容性

1. 向后兼容

  • 现有的历史记录不受影响
  • 标准二维码继续正常工作
  • 新功能为可选功能

2. 数据迁移

  • 无需数据迁移
  • 新属性为可选类型
  • 现有数据保持完整

测试验证

1. 构建测试

  • 项目成功构建
  • 无编译错误
  • 只有少量警告(不影响功能)

2. 功能测试

  • 样式数据正确保存
  • 历史记录正确显示
  • 详情页面正确展示
  • 中文显示名称正确

总结

本次更新成功实现了二维码样式数据与历史记录系统的完整集成,为用户提供了更好的二维码管理体验。用户现在可以:

  1. 保存样式信息:创建自定义二维码时自动保存样式配置
  2. 查看样式详情:在历史记录中快速识别自定义样式二维码
  3. 管理样式数据:在详情页面查看完整的样式参数信息

该功能为应用增加了重要的价值,提升了用户体验,同时保持了良好的代码质量和向后兼容性。