专业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")] }