swift开发一个Widget应用
对于从零开发一个Widget应用,本文主要介绍如下几点:1.为现已有工程添加Widget; 2.绘制UI; 3.App间跳转; 4.数据共享的方式; 1.为现有工程添加Widget新建工程 选择`Today Extension`,确认,为工程添加Widget成功. 2.绘制UI和普通控制器一样,正常的绘制UI即可,默认工程使用SB构建,自己可以选用代码构建,需要注意的是,要删除plist中相关的代码. 3.App间跳转app跳转可以通过URI方式打开和传值.
4.数据共享的方式扩展程序一般都不是脱离宿主程序单独运行的,难免需要和宿主程序进行数据交互。通过App Groups提供的同一group内app共同读写区域,可以用NSUserDefaults和NSFileManager两种方式实现extension和containing app之间的数据共享。 使用App Groups需要在主程序和widget程序中分别打开App Groups选项,保证两个地方选择的groups相同,如下: UserDefaults方式: //写入数据 let userDefaults = UserDefaults(suiteName: "group.com.walden.Widget-Demo") userDefaults?.set("abcdefg",forKey: "widget") userDefaults?.synchronize() //读取数据 let userDefaults = UserDefaults(suiteName: "group.com.walden.Widget-Demo") let str = userDefaults?.value(forKey: "widget") as? String FileManager方式: //写入数据 var containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.walden.Widget-Demo") containerURL = containerURL?.appendingPathComponent("Library/Caches/widget") let value = "abcdefg" try? value.write(to: containerURL!,atomically: true,encoding: .utf8) //读取数据 var containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.walden.Widget-Demo") containerURL = containerURL?.appendingPathComponent("Library/Caches/widget") let v = String(contentsOf: containerURL!,encoding: .utf8) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |