首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在我切换到亮或暗模式之前,SwiftUI视图不会显示数据

在切换到亮或暗模式之前,SwiftUI视图不会显示数据是因为SwiftUI是根据当前的外观模式(亮模式或暗模式)来渲染视图的。当切换外观模式时,SwiftUI会重新加载视图并根据新的外观模式进行渲染。

为了解决这个问题,可以使用SwiftUI的@Environment属性包装器来监听外观模式的变化,并在外观模式变化时更新视图。具体步骤如下:

  1. 在视图中使用@Environment属性包装器来获取外观模式的值,例如:
代码语言:txt
复制
@Environment(\.colorScheme) var colorScheme
  1. 在视图的body属性中根据外观模式的值来渲染不同的内容,例如:
代码语言:txt
复制
var body: some View {
    if colorScheme == .dark {
        // 暗模式下的视图内容
    } else {
        // 亮模式下的视图内容
    }
}

这样,当切换外观模式时,视图会根据新的外观模式重新渲染,并显示相应的数据。

关于SwiftUI的更多信息和使用方法,你可以参考腾讯云的相关产品文档和教程:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

探讨 SwiftUI 中的几个关键属性包装器

@State @State 是 SwiftUI 中最常用的属性包装器之一,主要用于视图内部管理私有数据。它特别适合存储值类型数据,如字符串、整数、枚举结构体实例。...标注的对象实例视图的整个生命周期中保持唯一,即使视图更新,对象实例也不会重新创建。...它提供了一种便捷的方式不同的视图层级中引入共享数据,而无需显式地通过每个视图的构造器传递。 典型应用场景 当需要在多个视图间共享同一个数据模型时,如用户设置、主题应用状态。...它允许视图访问由 SwiftUI 应用环境提供的数据、实例方法。...典型应用场景 当需要访问和响应如界面样式(模式/模式)、设备方向、字体大小等由系统上层视图提供的环境值时( 通常对应值类型)。

18710

如何在Xcode下预览含有Core Data元素的SwiftUI视图

预览模拟器不支持控制台输出显示、不支持断点调试,即使动态预览模式下(支持交互的预览模式),我们也不会在Xcode中获得任何代码中的控制台输出内容。因此预览发生问题时,用于排查故障的手段很有限。...可以预览但是有错误提示 有时含有Core Data元素的视图预览时会出现如下的错误提示: image-20210827191644251 将预览切换到动态模式通常就可以正常显示。...某些情况下,即使感觉上预览是正常(实际上数据没有刷新),通过切换到动态模式也会强制Core Data数据刷新。...SwiftUI通常采用Redux的开发模式,通过将获取到的Core Data数据转换成标准的Swift结构从而避免视图中使用托管对象上下文托管对象。...重启应用重启预览后,数据会恢复成Bundle中的原始数据集(有时预览模式数据不会立即复原,需几次动态模式切换后才会恢复)。

5.1K10

SwiftUI:特殊效果 - 模糊,混合模式

SwiftUI使我们能够出色地控制视图的呈现方式,包括应用实时模糊,混合模式,饱和度调整等功能。 混合模式使我们可以控制一个视图另一个视图上的渲染方式。...默认模式是.normal,它只是将新视图中的像素绘制到后面的任何东西上,但是有很多选项可以控制颜色和不透明度。...另一个流行的效果称为 screen,它的作用与乘法相反:将颜色反转,执行乘法,然后再次反转颜色,从而产生较的图像而不是较的图像。...取而代之的是,您会看到SwiftUI的自适应颜色旨在在黑暗和明亮模式下看起来都不错,因此它们是红色,绿色和蓝色的自定义混合色,而不是纯色。...因此,继续进行之前,让我们看一下另外一个:饱和度saturation(),用于调整颜色的数量。视图内部使用。给它一个介于0(无颜色,只有灰度)和1(全色)之间的值。

2.4K60

全功能数据库管理工具-RazorSQL 10大版本发布

RazorSQL 支持40 多个数据库,可以通过 JDBCODBC连接到数据库: ◆ 增强功能 增强了模式。可以通过 View -> Dark Mode 菜单选项选择模式。...Mac:现在默认自动检测模式/模式。...:当系统导航器用于填充数据库浏览器时,数据库类型包含在浏览器的顶级名称中 ◆ Bug修复 如果 RazorSQL 部分不在屏幕上,则自动查找/自动完成窗口可能会在屏幕外显示 Mac:如果通过视图菜单增加文本大小...,弹出菜单字体不会增加 深色模式:匹配括号/括号高亮颜色难以看到 Mac:某些情况下,查看菜单未正确显示当前设置的外观选择 通过 UCanAccess 驱动程序连接到 MS Access 时,日期字段导入工具和生成...文件系统浏览器:Windows / Linux:文件名可能会被截断 文件系统浏览器:突出显示与文件名标签不匹配的日期和大小标签的颜色前景 Mac:如果从视图菜单中选择模式,将选择切换到自动检测/模式不再重新打开自动检测

3.8K20

SwiftUI:使用 @EnvironmentObject 从环境中读取自定义值

SwiftUI的环境使我们可以使用来自外部的值,这对于读取Core Data上下文视图的展示模式等很有用。...假设我们一个应用程序中有多个视图,所有视图都排成一排:视图A显示视图B,视图B显示视图C,C显示D,D显示E。...这意味着,如果视图A是导航视图,则所有压入导航堆栈的视图都可以访问同一环境。但是,如果视图A以工作表(sheet)的形式显示视图B,则它们不会自动共享环境数据,因此我们需要手动发送。...Apple已将此工作表情况描述为他们想要修复的错误,因此希望以后对SwiftUI的更新中会有所改变。...向您展示一些代码之前,还有最后一件事:环境对象使用您已经学过的ObservableObject协议,SwiftUI将自动确保共享同一环境对象的所有视图更改时都会更新。

9.5K20

SwiftUI中使用UIKit视图

相当长的时间中开发者仍需SwiftUI中依赖UIKit(AppKit)代码。好在,SwiftUI为开发者提供了便捷的方式将UIKit(AppKit)视图控制器)包装成SwiftUI视图。...如果你已经对如何使用UIViewRepresentable有所掌握,可以直接从SwiftUI风格化部分阅读 基础 具体演示包装代码之前,我们先介绍一些与SwiftUI中使用UIKit视图有关的基础知识...该方法UIViewRepresentable的生命周期中会多次调用,直到视图被移出视图树(更准确地描述是切换到另一个不包含该视图视图树分支)。...协调器中,我们可以通过双向绑定(Binding),通知中心(notificationCenter)其他例如Redux模式的单项数据流等方式,将UIKit视图内部的状态报告给SwiftUI框架其他需要的模块...SwiftUI中很多数据类型官方并不提供转换到其他框架类型的方案。比如Color、Font。不过这两个多写点代码还是可以转换的。

8.1K20

Ask Apple 2022 与 SwiftUI 有关的问答(下)

阅读 The SwiftUI Layout Protocol [11]了解如何创建自定义布局。创建从底部开始的滚动视图Q:如何实现一个底部对齐的滚动视图 macOS 上会不会有糟糕的性能?...Swiftcord[12] 的代码展示了如何在 SwiftUI 下实现倒置列表。阅读 优化 SwiftUI List 中显示数据集的响应效率[13] 一文,了解苹果工程师推荐的方法。...两种方案中,如果在数据量很大的情况下,更倾向于第一种方式,这样可以按需求读取数据。...解决了之前的一大遗憾。如此一来,边栏视图的样式自由度获得了极大的提高。...Too complex to type checkQ: iOS 14 SwiftUI 中遇到一个问题,试图有条件地显示 3 个符合 Shape 协议的对象中的一个。

14.7K30

Ask Apple 2022 与 SwiftUI 有关的问答(上)

对于苹果工程师给予的建议有一点请注意,那就是如果有视图中修改该环境对象实例的需求,须确保父视图不会被反复重构( SwiftUI 重新创建视图类型的实例 )。...MVVMQ: UIKit 时代,MVVM 是一种常见的架构,视图显示数据来自一个单独的 viewModel 类。...已经开始采用 NavigationSplitView,并且非常喜欢它。在有些情况下,想根据视图是否折叠来做决定( 例如,如果展开,详细视图显示一条信息,如果折叠,则显示一个警告其他指示 )。...使用它们应该只创建一个实例,然后可以视图中读取。这应该不会增加内存的使用( 如果有的话,请提出反馈 )。如果你向你的模型对象追加越来越多的数据,你可能会增加内存的使用,这是很正常的。...换句话说,如果写 Color.green.task { self.someState += } ,是否能保证视图第一次出现之前状态一定会改变?

12.2K20

老人新兵 —— 一款 iOS APP 的开发手记

、Combine 以及 Core Data 中的新特性对很有吸引力兴趣驱动,没有商业压力和历史包袱,因此可直接采用尚未成熟前景不明的技术经过一番了解后,最终选择 SwiftUI + Combine...但对于移动端应使用什么样的产品框架则完全没有概念。想着既然作为兴趣作品,那么可以借机多了解一下当下流行的移动数据持久化方案。...SwiftUI 给我创建了一个非常高效的环境,短时间内便可以将整个 app 的原型跑起来,但当真正地将具体实现以及数据流完全串联起来时才发现一并不那么简单。...最后的 app 里面有接近一半的显示控制其实都是 UIKit 下完成的,即使像 TextField 这样最基本的需求,SwiftUI 的原生版本有时都无法胜任。...@FetchRequest 目前只能在 init 中通过参数动态设置一次( 无法动态修改 ),如果需要显示不同的谓词排序结果,只能通过上层视图重新设置。

2.5K40

架构之路 (五) —— VIPER架构模式(一)

VIPER架构模式是MVCMVVM的另一种选择。虽然SwiftUI和Combine框架创建了一个强大的组合,可以快速构建复杂的ui和在应用程序中移动数据,但它们也面临着各自的挑战和对架构的看法。...这与SwiftUI不同,SwiftUI中,视图显示任何新视图。 这种分离来自“Uncle”Bob Martin的Clean Architecture paradigm。...Setting Up the Trip Detail Screens 显示细节屏幕之前,您需要创建它。...router处理从一个屏幕到另一个屏幕的转换,设置下一个视图所需的类。 命令式UI范例中——换句话说,UIKit中——路由router将负责显示视图控制器激活segue。...要将VIPER映射到SwiftUI视图现在负责显示/隐藏视图,路由router是一个目标视图生成器,presenter它们之间进行协调。

17.4K10

用NavigationViewKit增强SwiftUI的导航视图

由于SwiftUI原生提供的导航手段能力有限,因此之前的版本中,NavigationView总是使用的不是那么的顺手。...有以下几个不满意的地方: •缺少直接返回根视图的便捷手段•无法通过代码(不通过NavigationLink)跳转到新视图•双栏模式(DoubleColumnNavigationViewStyle)下显示风格不统一...•iPad下,无法竖屏(Portrait)模式下保持双栏状态 因此,在这次开发的准备阶段,写了一个针对NavigationView的扩展库——NavigationViewKit[3]。...视图中支持SwiftUI原生的所有定义,例如toolbar、navigationTitle等。 目前启用转场动画时,title和toolbar会在转场动画后才显示,观感稍有不足。日后尝试解决。...[5]中,希望iPad版本无论横屏竖屏时,都始终能够保持两栏显示的状态,且左侧栏不可隐藏。

3.2K20

SwiftUI 4.0 的全新导航系统

基于类型的响应式目标视图处理机制 比如下面的代码是老版本( 4.0 之前SwiftUI 中使用编程式跳转的一种方式: struct NavigationViewDemo: View { @...绑定了数据后,通过 List 构造方法创建的循环 ForEach 创建的循环中的内容( 不能自带点击属性,例如 Button onTapGesture ),将被隐式添加 tag 修饰符,从而具备点击后可更改绑定数据的能力...无论将 List 放置 NavigationSplitView 的最左侧一栏( 双栏模式 )还是左侧两栏中( 三栏模式 ),都可以通过 List 的绑定数据进行导航。...,例如, macOS 上,detalOnly 不会起作用 如果想在 SwiftUI 4.0 之前的版本上使用类似的功能,可以参考 用 NavigationViewKit 增强 SwiftUI 的导航视图...iPad Portrait 显示状态下,默认即为此种模式 balanced 显示左侧栏的时候,缩小右侧 Detail 栏的尺寸。

10.2K62

Xcode 11 初体验

、storyboad其中有两篇博客也介绍到了SwiftUI:SwiftUI - 百行代码变十行,Swift再创辉煌 和 WWDC - SwiftUI - 初恋般的感觉 代码块 代码块也做了调整,界面漂亮直观...Editor Only:只显示代码编辑器。 Editor and Canvas:代码编辑器和SwiftUI预览视图。 Editor and Assistant:代码编辑器和辅助视图。...看来苹果爸爸也实在受不了我们乱七八糟没有注释的代码,提倡我们文明编程 Change Bar Change Bar这个功能之前也有,还是比较喜欢的!...开发和调试时,随时暗黑和明亮模式之间进行切换。 Asset目录可以使你轻松的控制图像和颜色暗黑和明亮模式之间进行切换。...关于Swift UI 的更新 其中有两篇博客也介绍到了 SwiftUI : SwiftUI - 百行代码变十行,Swift再创辉煌 WWDC - SwiftUI - 初恋般的感觉 参考:Apple 官方文档一线搬砖工人

3.1K10

SwiftUI: 从 React 开发人员的角度看 SwiftUI

最近通过学习 SwiftUI 时,令我印象最深的就是对它的熟悉程度,因为已经 React 和 TypeScript上工作了几年了。...确实,有使用 React 库/框架和类型的经验可以极大地加快的学习速度。的第一个SwiftUI代码对过去 React 中构建的东西感到非常陌生,而且可以看到设计模式有很多重叠之处。...开发使用工具 macOS Big Sur Xcode 12.4 运行实例运行在 MacBook Pro (13-inch, M1, 2020) View 剖析 进入本主题的核心之前想先介绍一下构成...上图展示了组成 SwiftUI视图的主要元素 View 这是表示与用户界面有关的任何内容的 protocol 协议 type 类型。如果需要的话,它们对SwiftUI 来说是什么组件。...在下面,您将找到两个代码段,第一个包含有效的SwiftUI视图,第二个显示无效的SwiftUI视图的示例: 使用 VStack 和 Text 原语视图的有效 SwiftUI 视图 struct ContentView

2K40

使用 SwiftUI 创建一个灵活的选择器

前言 最近,正在开发一个 Dribbble 上找到的设计的 SwiftUI 实现时,想到了一个点子,可以通过一些酷炫的筛选器扩展该项目以缩小结果列表。...使用 UIKit 时,总是将这种类型的视图实现为具有特定 UICollectionViewFlowLayout 的 UICollectionView。但在 SwiftUI 中该如何实现呢?...实现选择器本身之前列出了所有可自定义属性。接下来,创建了用于计算特定字符串值的宽度和高度的字符串扩展。...VStack 的高度是根据两个值计算的: 输入数据中任何项目的高度(类似于宽度的计算,通过使用 reduce 函数,总结与项目相关的所有高度) 将显示 VStack 中的行数 private func...最后,提供了一个简单的视图实现,可以 SwiftUI 中使用该选择器。这个选择器可用于创建各种交互式选择界面。 - EOF -

24420

解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug

众所周知,SwiftUI 是一个响应式框架,这意味着,当数据源发生变化时,框架会自动更新视图。同样,当我们想调整视图显示时,应直接对状态进行修改。...原文发表的博客 肘子的Swift记事本视图变化在前、状态变化在后 SwiftUI 中,某些可编程控件执行一定的操作时,会先更新视图,待视图变化完成后再修改与其对应的状态。...而通过调用环境值直接修改绑定状态,SwiftUI 则遵循了响应式编程原则,进行了的先调整状态,后更新视图的操作。...再次执行上述过程,您会发现在返回上层视图后,应用并不会锁死,一都恢复了正常。然而,明显地,强迫用户点击 “Dismiss” 按钮并不是一个好的选择,特别是没有屏蔽手势取消 Sheet 的情况下。...AttributeGraph 是 SwiftUI 用于维护众多数据源与视图之间依赖关系的工具。

588110

庆幸果断放弃了SwiftUI:它还不够成熟

这是个宝贵的机会,能让认真体验一把 SwiftUI 并探索其内部工作原理。 起初项目工作良好,SwiftUI 的表现可以说非常满意,甚至创建了自己的修改器,以便更轻松地显示警报消息。...需要为每个上下文创建一个视图,这些视图同时又是其他视图的「子视图」,然后把需要的数据传递给特定视图。...这些按钮只跟管理 SpriteKit 视图缩放的 @State 相关联。尽管几乎不涉及任何其他数据界面更新前单击这些按钮,也会产生将近一秒钟的巨大延迟。...刚开始以为是因为地图编辑器的 SpriteKit 主视图仍在后台渲染。所以我尝试工作表显示出来后禁用渲染,但结果没有任何改变。 变更从一种环境传播至另一环境时,也遇到了类似的延迟问题。...打算在 Nihongo no Kana 的更新版本中再用用 SwiftUI,毕竟那款 iOS/iPadOS 应用的重绘频率低得多,所以应该不会有太大问题。

4.9K20

从用SwiftUI搭建项目说起

Apple SwiftUI SwiftUI ---- 进入项目搭建先说说自己对SwiftUI的一个基本的认知: SwiftUI觉得对iOSer来说最大的是开发UI模式的优化...,针对一个需求或者是一个新的项目我们基本上都是从写UI开始的,根据设计图再编造一些假数据来做,只是写的过程中它的及时效果也都是脑补!...,标签(TabBar)+ 导航(Na)形式的模式是随处可见的,我们这次的目的是利用SwiftUI搭建这样一个场景构建一个基本的应用,包括登录和数据处理以及iOS常见控件SwiftUI中的一些具体的使用...View ---- 自己觉得,要想从UIKit转换到SwiftUI,需要我们最先转变的概念就是 Controller -> View 的一个改变,使用SiwftUI写UI的过程中,基本上是不在需要我们向...,基本上代码注释中说的比较清楚了,应该能理解的。

4.4K20

肘子的 Swift 周报 #033|改善社区活跃度,仅更新论坛还不够

本文中,将主要讨论那些对个人影响深远的变化,并探讨与 SwiftUI 以及苹果生态系统密切相关的其他框架和功能的演变,展示它们如何共同塑造了我们今天所使用的平台。...MVVM: An architectural coding pattern to structure SwiftUI Views ( MVVM:用于构建 SwiftUI 视图的架构编码模式 )[12]...在这篇文章中,Antoine van der Lee 探讨了如何以适合 SwiftUI 的方式实施 MVVM 架构模式来构建视图。...他本文中建议,内容提供者应构建直接的观众群,并专注于与读者之间的直接关系,而非通过大型平台作为中介。这可能意味着采用订阅模式,或者专注于特定细分的 B2B 市场建立社区,而不仅仅是提供答案。...Views ( MVVM:用于构建 SwiftUI 视图的架构编码模式 ): https://t.ly/LDgSW [13] Antoine van der Lee: https://x.com/twannl

10910
领券