登陆 | 注册 设为首页 | 加入收藏 | 联系我们
太和养老网
热词老年艺术  助老机构  养老系统  

中心区域北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 香港 澳门 台湾 全国城市养老院目录 全国县市养老院汇总目录 太和AI作品展 太和养老艺术网AI作品展示

iOS widget 小组件开发-飞

 

2023/7/6 17:11:31 ('互联网')

iOS widget 小组件开发Github地址

项目选择对应语言项目小组件部分 Github地址 https://github.com/HahnLoving/iOS_Study

创建项目1.png2.pngwidget 代码说明Provider
struct Provider: TimelineProvider {    // 占位视图,例如网络请求失败、发生未知错误、第一次展示小组件都会展示这个view    func placeholder(in context: Context) -> SimpleEntry {        SimpleEntry(date: Date())    }    // 定义Widget预览中如何展示,所以提供默认值要在这里    func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) {        let entry = SimpleEntry(date: Date())        completion(entry)    }    // 决定 Widget 何时刷新    func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {        var entries: [SimpleEntry] = []        // Generate a timeline consisting of five entries an hour apart, starting from the current date.        let currentDate = Date()        for hourOffset in 0 ..< 5 {            let entryDate = Calendar.current.date(byAdding: .hour, value: hourOffset, to: currentDate)!            let entry = SimpleEntry(date: entryDate)            entries.append(entry)        }        let timeline = Timeline(entries: entries, policy: .atEnd)        completion(timeline)    }}
SimpleEntry
// 渲染 Widget 所需的数据模型,需要遵守TimelineEntry协议struct SimpleEntry: TimelineEntry {    let date: Date}
MainWidgetEntryView
// 渲染的viewstruct MainWidgetEntryView : View {    var entry: Provider.Entry    var body: some View {        Text(entry.date, style: .time)    }}
MainWidget
@mainstruct MainWidget: Widget {    // 主件唯一标识符    let kind: String = "MainWidget"    var body: some WidgetConfiguration {        StaticConfiguration(kind: kind, provider: Provider()) { entry in            MainWidgetEntryView(entry: entry)        }        // 标题        .configurationDisplayName("My Widget")        // 详情        .description("This is an example widget.")        // 枚举设置        .supportedFamilies([.systemMedium, .systemSmall, .systemLarge])    }}
MainWidget_Previews
// SwiftUI Xcode 测试预览视图struct MainWidget_Previews: PreviewProvider {    static var previews: some View {        MainWidgetEntryView(entry: SimpleEntry(date: Date()))            .previewContext(WidgetPreviewContext(family: .systemSmall))    }}
效果图3.jpgwidget 分组

widget 有多组和单组区别。
单组包含 小,中,大,特大(iOS 15)
多组包含 小,小,小

单组的例子如系统的天气widget包含小,中,大三个组件

4.jpg5.jpg6.jpg

多组以支付宝为例子。包含两个小的组件

7.jpg8.jpg单组件适配开发

MainWidgetEntryView

// 渲染的viewstruct MainWidgetEntryView : View {    var entry: Provider.Entry        // 判断小组件的类型    @Environment(\.widgetFamily) var family: WidgetFamily    var body: some View {//        Text(entry.date, style: .time)        switch family {        case .systemSmall:            VStack(alignment: .center, spacing: 0) {                Text("小")                Spacer().frame(height: 20)                Text(entry.date, style: .time)            }        case .systemMedium:            VStack(alignment: .center, spacing: 0) {                Text("中")                Spacer().frame(height: 20)                Text(entry.date, style: .time)            }        default:            VStack(alignment: .center, spacing: 0) {                Text("大")                Spacer().frame(height: 20)                Text(entry.date, style: .time)            }        }    }}

效果图

9.jpg10.jpg多组件开发 WidgetBundle

多组件开发使用了 WidgetBundle
下面用了以下5个案例讲解多组件开发
1.网络请求 NetWorkData
2.网络图片 NetWorkImage
3.编辑小组件 Edit
4.和app本地数据进行交互和点击交互 AppData

MainWidget
先注释全部代码

import WidgetKitimport SwiftUIimport Intentsstruct SimpleEntry: TimelineEntry {    public let date: Date}struct PlaceholderView : View {    //这里是PlaceholderView - 提醒用户选择部件功能    var body: some View {        Text("Place Holder")    }}@mainstruct MainWidget: WidgetBundle {    @WidgetBundleBuilder    var body: some Widget {//        OneWordWidget()//        FristWidget(title: "hahn", desc: "hahn1")//        CountDownWidget()//        Demo(title: "Dem



扫码加微信详细咨询太和智慧养老产品和平台服务!

 

 





版权声明:

---------------------------------------------------------------


所有信息来源于互联网,本文的版权归原作者所有,不代表本网观点和立场。

本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 81480447@qq.com 举报,一经查实,本站将立刻删除。



扫码加微信详细咨询太和智慧养老产品和平台服务!

 

养老资讯
助老机构介绍
评论
已有 0 条评论

最新评论

推荐养老院

您希望养老院位于
  • 不限
  • 东城
  • 西城
  • 崇文
  • 宣武
  • 朝阳
  • 丰台
  • 石景山
  • 海淀
  • 门头沟
  • 房山
  • 通州
  • 顺义
  • 昌平
  • 大兴
  • 怀柔
  • 平谷
  • 延庆
  • 密云
您希望的价格范围
  • 不限
  • 500以下
  • 500-1000
  • 1000-2000
  • 2000-3000
  • 3000-5000
  • 5000以上
老人的情况是
  • 不限
  • 自理
  • 半自理
  • 全护理
  • 特护

姓名

年龄

电话

全国城市养老院



关于我们 | 联系方式 | 网站地图 | 友情链接

Copyright 2010-2022 京ICP备18035644号-3 北京太和 版权所有