swift开发一个Widget应用

swift开发一个Widget应用,第1张

概述对于从零开发一个Widget应用, 本文主要介绍如下几点: 1.为现已有工程添加Widget; 2.绘制UI; 3.App间跳转; 4.数据共享的方式;   1.为现有工程添加Widget 新建工程 选择`Today Extension`, 确认, 为工程添加Widget成功.   2.绘制UI 和普通控制器一样, 正常的绘制UI即可, 默认工程使用SB构建, 自己可以选用代码构建, 需要注意的是 对于从零开发一个Widget应用,本文主要介绍如下几点:

1.为现已有工程添加Widget;

2.绘制UI;

3.App间跳转;

4.数据共享的方式;

1.为现有工程添加Widget

新建工程

选择`Today Extension`,确认,为工程添加Widget成功.

2.绘制UI

和普通控制器一样,正常的绘制UI即可,默认工程使用SB构建,自己可以选用代码构建,需要注意的是,要删除pList中相关的代码.

3.App间跳转

app跳转可以通过URI方式打开和传值.

extensionContext?.open(URL(string: "mainApp://controller?type=1")!,completionHandler: { (result) in

print(result)

})

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)
总结

以上是内存溢出为你收集整理的swift开发一个Widget应用全部内容,希望文章能够帮你解决swift开发一个Widget应用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1057981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存