美文网首页Swiftui
OneDay - 精美的桌面小组件(SwiftUI + Widg

OneDay - 精美的桌面小组件(SwiftUI + Widg

作者: 健了个平_24 | 来源:发表于2021-07-09 03:39 被阅读0次

    前言

    最近在学习SwiftUI,想起我的设计师小伙伴有一份苹果小组件的设计图,而小组件-WigetKit只能用SwiftUI来开发,正好可以拿来练练手。

    下载地址:OneDay

    实用效果

    中杯+小杯
    大杯

    小组件每隔30分钟左右会刷新一次,并且提供小杯中杯大杯三种尺寸。

    效果个人感觉还是挺不错的,很适合装饰桌面😆

    数据源

    • 文案由 Hitokoto 提供,很多不错的段子和毒鸡汤,接口是:https://v1.hitokoto.cn

    • 图片则来自于:LoremPicsum,这个网站能提供各种精致图片,可以拼接自定义参数获取不同尺寸、滤镜的图片。

    当前进度

    目前只是一个用来装饰桌面的小组件,App的主界面都还没弄好,只有小组件功能。

    由于刚开始学习SwiftUI没多久,很多语法还在摸索当中,日后会逐渐完善,接下来的计划:

    1.适配iPad尺寸;
    2.可以切换多种不同字体;
    3.可以自定义文字位置;
    4.可以摆放更多内容。
    

    目前已完成:

    ✅ 可以编辑文案;
    ✅ 可以选择照片设置背景图。
    

    疑惑

    对小组件的刷新时机不太理解,我是这样设置的:

    func getTimeline(for configuration: ConfigurationIntent, in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
        // 请求数据
        OneDayModel.fetch(family: context.family) { model in
            // 设置下一步刷新时间:10分钟后
            let refreshDate = Calendar.current.date(byAdding: .minute, value: 10, to: Date())!
            
            // entries提供下次更新的数据
            let entry = OneDayEntry(date: refreshDate, model: model)
            
            // 刷新数据和控制下一步刷新时间
            let timeline = Timeline(entries: [entry], policy: .atEnd)
            completion(timeline)
        }
    }
    

    代码里是设置了30分钟后刷新的,然而实际上都是30~35分钟左右才刷新一次,也不知道是不是我弄错了,有待解决...

    最后

    感谢设计小哥哥提供的设计图,另外还要感谢公司的设计小姐姐给出的建议和Logo。

    如果感觉效果不错,可以下载安装体验一下,喜欢的话不妨给个Star,日后会不断完善其他功能~😊

    下载地址:OneDay

    相关文章

      网友评论

        本文标题:OneDay - 精美的桌面小组件(SwiftUI + Widg

        本文链接:https://www.haomeiwen.com/subject/eyvxpltx.html