外观更改时更新 Widget

2024-01-22

我需要知道你们中是否有人知道 SwiftUI 中的系统在外观发生变化时更新小部件light模式为dark模式,反之亦然。

我可以更改文本和图像,但我使用一种方法来显示地图的屏幕截图,并且每次外观发生变化时我都应该运行它以获得正确的地图颜色。


  1. 创建两个屏幕截图(每个主题一个)并将其传递到条目中:
struct SimpleEntry: TimelineEntry {
    let date: Date
    let mapScreenshots: [ColorScheme: Image]
}
struct Provider: TimelineProvider {
    ...

    func getTimeline(in context: Context, completion: @escaping (Timeline<SimpleEntry>) -> Void) {
        let entry = SimpleEntry(
            date: Date(),
            mapScreenshots: [
                // replace with actual map screenshots
                .dark: Image(systemName: "plus"),
                .light: Image(systemName: "minus"),
            ]
        )
        let timeline = Timeline(entries: [entry], policy: .never)
        completion(timeline)
    }
}
  1. Use @Environment(\.colorScheme)对主题更改做出反应:
struct WidgetEntryView: View {
    @Environment(\.colorScheme) var colorScheme

    var entry: Provider.Entry

    var body: some View {
        if let screenshot = entry.mapScreenshots[colorScheme] {
            screenshot
        }
    }
}
  • iOS 14 小部件检测系统主题更改 https://stackoverflow.com/a/64182738/8697793
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

外观更改时更新 Widget 的相关文章

随机推荐

  • 自定义 iOS Twitter 身份验证页面?

    我正在制作一个移动应用程序 用户可以将他们的 Twitter 帐户连接到该应用程序 我只是有点好奇最好的方法是什么 现在 我希望能够制作自己的自定义页面 无需使用 UIWebView 这可能吗 如果怎样 那么 Thanks 据我了解 您不希
  • 如何在 Node.js server.listen() 中使用可选的主机名参数

    从我到目前为止在教程中读到的内容来看 可选的hostname参数为server listen port hostname backlog callback 一直都是127 0 0 1 环回 0 0 0 0 监听每个可用的网络接口 默认选项
  • Tomcat 中是否可以让一个 appBase 由多个上下文路径提供服务?

    Tomcat 中是否可以让一个 appBase 由多个上下文路径提供服务 我有一个应用程序库 最近替换了第二个应用程序库 我的问题是许多用户仍然访问旧的上下文 我想从单个 appBase 提供现在常见的应用程序 但可以通过任一上下文访问 我
  • Jasmine:可观察到的单元测试 http 服务错误

    我对如何模拟我的 http 服务捕获可观察到的错误感到非常困惑 我已阅读角度文档 但我不明白如何构建测试 我想模拟我的服务中的错误 然后检查它是否捕获了可观察到的错误 我有另一个服务可以创建并抛出可观察到的错误 我的其余服务只是在遇到错误时
  • 我的 MVC 自定义 ControllerFactory 可以工作,但还能更好吗?

    我研究过 Ninject StructureMap 和其他依赖注入和服务定位器框架 但这个问题更多的是关于了解它是如何工作的以及什么可以做得更好 更重要的是 我无意于查看框架的依赖注入源代码 而是了解它在实践 代码中从头到尾是如何实现的 下
  • 如何让 Git 忽略符号链接?

    我的项目文件夹中有符号链接 以便当我在 Windows 10 计算机上的本地开发服务器中运行项目时可以访问大型视频和图像目录 问题是 Git 不允许我执行 add 因为当存在符号链接时 它会给我这个错误 error readlink Pro
  • 您如何向没有 Javascript 之外的编程经验的人解释 Javascript 类型数组?

    最近我经常使用 Canvas 开发一些关于网络游戏的想法 因此 我最近遇到了 Javascript 类型数组 我已经读过一些书 例如MDN https developer mozilla org en US docs Web JavaScr
  • 错误:自构建预编译头以来系统文件已被修改

    我刚刚下载了 xcode 6 的最终版本并编译了一个我正在使用测试版的项目 现在显然生成了以下错误模拟器 有人可以帮助我解决这个问题 fatal error file Applications Xcode app Contents Deve
  • 如何在asp .net core web api中获取后台服务中的主机URL?

    我有一个 Asp Net core Web api 它将运行后台服务来每天安排一些任务并发送一些邮件 在邮件中我需要有 api 的 url 除了控制器之外 还有什么方法可以在后台服务中获取主机 URL 后台服务在 Web 请求的范围之外运行
  • javax.xml.soap.MessageFactory的实例是线程安全的吗?

    有人知道 javax xml soap MessageFactory 的实例是否是线程安全的吗 我找不到任何与之相关的文档 如果您没有看到任何关于某些东西是否是线程安全的文档 您应该假设它不是 如果你假设它是 但事实并非如此 这将避免很多头
  • postgresql 中 mmm yyyy 格式的日期

    我有一个表 其中有一列没有时区的时间戳类型 我想选择该列mmm yyyy格式 例如 2011 年 3 月 怎么格式化成这样呢 我试过 select cast now as date 但它给了我不正确的格式 SELECT TO CHAR NO
  • 用 React 计算 SVG 边界框?

    我正在编写一个使用 React 生成 SVG 的可视化应用程序 我需要的部分之一是标签 即文本 由封闭框包围 带有可变文本 可能会旋转和设置样式 所以我有一个组件NodeLabel 目前具有固定尺寸 render return
  • 使用多列的参数化 IN 子句

    我有一个沿着这些线的查询 我试图通过比较元组来过滤结果集 例如SQL IN 子句中的多列 https stackoverflow com questions 13027708 sql multiple columns in in claus
  • Xcode UI 测试无密码身份验证

    我应该如何测试我的 iPhone 应用程序无密码认证 https medium com ninjudd passwords are obsolete 9ed56d483eb 要注册或登录 Xcode 中的 UI 测试 https devel
  • Solr 到应用程序洞察

    如何配置 Solr 日志以发送到 Azure Application Insights 我看到可以使用 Log4J 附加程序 https learn microsoft com en us azure application insight
  • 我必须在哪里以及为什么必须放置“template”和“typename”关键字?

    在模板中 我必须在哪里以及为什么要放置typename and template关于从属名称 到底什么是从属名称 我有以下代码 template
  • 更改 FileStream 写入编码类型

    这是我的代码 public static string DownloadFile string FtpUrl string FileNameToDownload string userName string password string
  • 在将 json 对象转换为字符串或字节时,Json 对象包含转换为“\n”的换行符

    包含换行符的 Json 对象被转换为 n 将 json 对象转换为字符串或字节时 如果我选择以下任何一种方式 它将新行字符转换为 n byte json objectMapper writeValueAsBytes jsonObject S
  • 根据条件替换并合并 pandas 中的行

    我有一个数据框 lft rel rgt num 0 t3 r3 z2 3 1 t1 r3 x1 9 2 x2 r3 t2 8 3 x4 r1 t2 4 4 t1 r1 z3 1 5 x1 r1 t2 2 6 x2 r2 t4 4 7 z3
  • 外观更改时更新 Widget

    我需要知道你们中是否有人知道 SwiftUI 中的系统在外观发生变化时更新小部件light模式为dark模式 反之亦然 我可以更改文本和图像 但我使用一种方法来显示地图的屏幕截图 并且每次外观发生变化时我都应该运行它以获得正确的地图颜色 创