专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构

加载表情包数据

  • HMEmoticonManager 定义 loadPackage(id: String) 加载单个表情包

    // 单例
    class HMEmoticonManager: NSObject {
      static let shared: HMEmoticonManager = HMEmoticonManager()
    
      /// 表情包 Emoticons.bundle 的路径
      let bundlePath = Bundle.main.path(forResource: "Emoticons", ofType: "bundle")!
    
      /**
       加载表情包
       - parameter id: 表情包文件夹名称
       - returns: 表情包
       */
      private func loadPackage(id: String) -> HMEmoticonPackageModel {
          // 获取 表情包文件夹/info.plist 内容
          // info.plist的路径 = bundlePath + 表情包名称 + info.plist
          let infoPath = "\(bundlePath)/\(id)/info.plist"
          // print("infoPath: \(infoPath)")
    
          // 加载 info.plist
          let infoDict = NSDictionary(contentsOfFile: infoPath)!
    
          // 获取表情包名称,赋值给当前表情包模型
          let group_name_cn = infoDict["group_name_cn"] as! String
    
          // 获取 emoticons 数组
          let emoticonsArr = infoDict["emoticons"] as! [[String: String]]
    
          // 表情模型数组
          var emoticons = [HMEmoticonModel]()
    
          // 遍历,加载表情模型
          for dict in emoticonsArr {
              // 表情字典 转 模型, 添加到表情模型数组里面
              emoticons.append(HMEmoticonModel(dict: dict))
          }
    
          // 创建表情包模型
          let package = HMEmoticonPackageModel(id: id, groupName: group_name_cn, emoticons: emoticons)
    
          return package
      }
    }
    
  • 定义 loadPackages() 加载多个表情包
    /// 加载所有的表情包
    func loadPackages() -> [HMEmoticonPackageModel] {
      return [loadPackage(id: "com.sina.default"), loadPackage(id: "com.apple.emoji"), loadPackage(id: "com.sina.lxh")]
    }
    
  • HMEmoticonManager 添加懒加载属性,以后访问这个懒加载的表情包属性
    /// 所有表情包模型
    lazy var packages: [HMEmoticonPackageModel] = self.loadPackages()
    
  • 测试加载数据是否正常
    print(HMEmoticonManager.shared.packages)
    
  • 再添加 最近 表情包
    /// 加载所有的表情包
    func loadPackages() -> [HMEmoticonPackageModel] {
      let recentPackage = HMEmoticonPackageModel(id: "", groupName: "最近", emoticons: [HMEmoticonModel]())
      return [recentPackage, loadPackage(id: "com.sina.default"), loadPackage(id: "com.apple.emoji"), loadPackage(id: "com.sina.lxh")]
    }
    

results matching ""

    No results matching ""