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

SwiftUI预览中的暗模式在Xcode11.4中没有黑色背景

SwiftUI 是苹果推出的一个现代 UI 框架,它允许开发者使用声明式语法来构建用户界面。SwiftUI 的预览功能允许开发者在 Xcode 中实时查看 UI 的效果,包括暗模式下的样式。

基础概念

暗模式是一种用户界面设计,它在较暗的背景色上使用较亮的文字和元素,以减少屏幕亮度,从而减少眼睛疲劳,并且在低光环境下提供更好的可视性。SwiftUI 提供了对暗模式的内置支持,可以通过 @Environment 属性包装器来访问当前的颜色方案。

相关优势

  • 减少眼睛疲劳:暗模式在低光环境下对眼睛更为友好。
  • 电池寿命优化:对于 OLED 屏幕,暗模式可以减少屏幕亮度,从而节省电池。
  • 更好的视觉对比度:暗背景上的亮文字提供了更高的对比度,有助于提高可读性。

类型

  • 系统级暗模式:根据用户的系统设置自动切换。
  • 应用内暗模式:应用可以提供自己的暗模式设置,独立于系统设置。

应用场景

  • 阅读类应用:如电子书、新闻应用等。
  • 社交媒体应用:提供夜间模式以减少对眼睛的压力。
  • 编辑器类应用:如代码编辑器,提供高对比度的编辑环境。

问题原因及解决方法

在 Xcode 11.4 中,SwiftUI 的预览功能可能没有正确显示暗模式的黑色背景,这可能是因为 Xcode 11.4 发布时 SwiftUI 还处于较早期版本,对暗模式的支持可能不完善。

解决方法:

  1. 升级 Xcode:确保你使用的是最新版本的 Xcode,因为苹果在后续版本中对 SwiftUI 和暗模式的支持进行了改进。
  2. 手动设置颜色方案:在 SwiftUI 预览中,你可以手动指定颜色方案来查看暗模式的效果。
代码语言:txt
复制
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
            .previewDevice(PreviewDevice(rawValue: "iPhone 11"))
            .previewInterfaceOrientation(.portrait)
            .colorScheme(.dark) // 手动设置颜色方案为暗模式
    }
}
  1. 检查系统设置:确保你的 Mac 系统设置中的显示选项已经启用了深色模式。
  2. 使用 @Environment 属性包装器:在你的 SwiftUI 视图中使用 @Environment(\.colorScheme) 来根据当前的颜色方案动态改变 UI。
代码语言:txt
复制
struct ContentView: View {
    @Environment(\.colorScheme) var colorScheme

    var body: some View {
        VStack {
            Text("Hello, World!")
                .foregroundColor(colorScheme == .dark ? .white : .black)
                .padding()
        }
        .background(colorScheme == .dark ? Color.black : Color.white)
    }
}

通过上述方法,你应该能够在 Xcode 中正确预览 SwiftUI 的暗模式效果。如果问题仍然存在,建议检查 Xcode 的更新或者查看苹果开发者文档获取最新的支持信息。

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

相关·内容

SwiftUI WWDC作为开发者的我最激动的部分

SwiftUI 所有Apple平台都是原生的 ---- SwiftUI在创造世界上最创新、最直观的用户界面方面积累了数十年的经验。...用户喜欢苹果生态系统的所有方面,比如控件和特定于平台的体验,都可以在代码中很好地表现出来。SwiftUI是真正的本地应用程序, ?...自动支持动态类型、暗模式、本地化和可访问性意味着您的第一行SwiftUI代码已经是您编写过的最强大的UI代码。 ?...当您在设计画布中工作时,您编辑的所有内容都与相邻编辑器中的代码完全同步。当您键入时,代码作为预览立即可见,并且您对该预览所做的任何更改都会立即出现在您的代码中。...Xcode会立即重新编译您的更改,并将其插入到您的应用程序的运行版本中,随时可见和可编辑。 ? 如何去学习SwiftUI ----

2.3K30

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

SwiftUI使我们能够出色地控制视图的呈现方式,包括应用实时模糊,混合模式,饱和度调整等功能。 混合模式使我们可以控制一个视图在另一个视图上的渲染方式。...例如,我们可以在ZStack中绘制一个图像,然后在顶部添加一个红色矩形,该矩形使用 multiply 混合模式绘制: ZStack { Image("zhy") Rectangle(...每个像素具有RGBA的颜色值,范围从0(没有该颜色)到1(所有颜色),因此所得的最高颜色为1x1,最低的颜色为0x0。...对纯色使用乘法会产生一种非常常见的色调效果:黑色保持黑色(因为它们的颜色值为0,所以无论您将顶部乘以0都将产生0),而较浅的颜色会变成各种阴影着色。...取而代之的是,您会看到SwiftUI的自适应颜色旨在在黑暗和明亮模式下看起来都不错,因此它们是红色,绿色和蓝色的自定义混合色,而不是纯色。

2.6K60
  • 苹果iOS 13 新设计规范全面解析

    关于如何设计黑暗模式,苹果也给出了几点建议。在iOS 13.0及更高版本中,人们可以选择采用称为黑暗模式外观。在暗模式下,系统为所有屏幕,视图,菜单和控件使用较暗的配色,使前景内容在较暗的背景下突出。...您可能会在深色背景上找到暗文本不易辨认的地方。您可能还会发现在暗模式下启用“增加对比度”会导致暗文本和深色背景之间的视觉对比度降低。...暗模式中的调色板包括较暗的背景颜色和较浅的前景色,经过精心挑选以确保对比度,同时保持模式之间的一致感。 使用适应当前外观的颜色:语义颜色(如分隔符)会自动适应当前外观。...在下图中,我们可以体会下黑色模式和浅色模式下,同一种颜色对于用户视觉的影响,是不一样的,要保证在两种模式下都有更好的对比度和可读性,需要设计师更严谨的配色。 ? 柔化白色背景的颜色。...可以上图这个简单的操作来理解基本层和浮出层。常规情况下,打开通讯录,那么这个界面使用了纯黑色背景,但是当我们从电话应用中打开这个联系模块时,此时它的背景色就成为了稍浅一点的颜色。 ?

    4.6K40

    20种常用的 Ps技术

    :白色(色调值=0)是最大负位移,即将要处理图象相应的象素向左和向上移动;黑色(色调值=255)是最大正位移,即把图象中相应的象素向右和向下移动;灰色(色调值=128)不产生位移) 照片底纹效果 1...颗粒(9,56,垂直). 4 新建一图层,执行滤镜-渲染-云彩. 5 再执行图象-调整-亮度/对比度(+27,+100). 6 用魔棒工具,选定图层一中的黑色选区. 7 关闭图层一的预览,点击复制背景层...,将前景色改为暗棕色. 8 执行选择-修改-扩展(5像素),选择-羽化(5像素) 9 编辑-填充(前景色),选定图层一,用魔棒选取黑色选区 10 关闭背景层和图层一的预览,选定复制背景层,执行编辑...-清除. 11 图象-画布大小,高度/宽度均增加一厘米,定位(中). 12 打开背景层预览,选定背景层,填充前景色(浅棕色). 13 选定复制背景层,执行图层-图层样式-投影....玻璃(扭曲度7,平滑度3,纹理-画布,缩放50%). 6 新建一个图层,背景为黑色,另新建一图层,添充白色矩形. 7 在矩形所在的层上执行滤镜-扭曲-置换,选择默认的选项。

    2.6K10

    iPadOS生产力翻身,Mac Pro官方攒机 | 软、硬皆出彩的WWDC19

    这次发布会上苹果CEO库克登场后并没有和往常开场时介绍苹果的业绩,而是直接开始介绍苹果的TV+服务。并推出了一个登月题材的(For All Mankind)剧集的预览。...iOS 13的全新黑暗模式登场,旨在提速减重 ? 黑色的UI界面,无需OLED发光,好歹也能省电一点。iPhones,iPad和iPod touch均可在iOS 13中具有可选的暗模式。...iPadOS 还拥有全新的文件管理 app,新的文件预览模式,现在 iCold 支持文件夹的分享、SMB 文件传输,还支持了 U 盘和 SD 卡直接读取,同时还支持解压和压缩功能。...现场还播放了一段一个行动不变的大叔靠语音控制实现了各种操作。 开发者福利,新框架SwiftUI ? 开发语言Swift建立的新框架——SwiftUI,让开发者们更快更简单的写出代码。...Xcode 11 包含更直观的新设计工具,可让开发者通过拖拽的方式使用 SwiftUI 构建界面,在这过程中可以直接设置控件的相关属性,实现了左边代码,右边呈现效果。

    1.3K40

    「Adobe国际认证」关于Adobe Photoshop,创建和修改画笔教程?

    文末彩蛋教程 混合模式说明 正常编辑或绘制每个像素,使其成为结果色。这是默认模式。(在处理位图图像或索引颜色图像时,“正常”模式也称为阈值。) 溶解编辑或绘制每个像素,使其成为结果色。...变暗查看每个通道中的颜色信息,并选择基色或混合色中较暗的颜色作为结果色。将替换比混合色亮的像素,而比混合色暗的像素保持不变。 正片叠底查看每个通道中的颜色信息,并将基色与混合色进行正片叠底。...结果色总是较暗的颜色。任何颜色与黑色正片叠底产生黑色。任何颜色与白色正片叠底保持不变。当您用黑色或白色以外的颜色绘画时,绘画工具绘制的连续描边产生逐渐变暗的颜色。...与黑色混合则不发生变化。 叠加对颜色进行正片叠底或过滤,具体取决于基色。图案或颜色在现有像素上叠加,同时保留基色的明暗对比。不替换基色,但基色与混合色相混以反映原色的亮度或暗度。...此模式会将所有像素更改为主要的加色(红色、绿色或蓝色)、白色或黑色。 未完待续......

    2K20

    Xcode 11 初体验

    Editor and Canvas:代码编辑器和SwiftUI预览视图。 Editor and Assistant:代码编辑器和辅助视图。...其中说明一下:SwiftUI 预览 系统最低要求macOS 10.15 Add Editor 提供了编辑窗口的任意切割功能 可以指定文件打开的位置。...Asset目录可以使你轻松的控制图像和颜色在暗黑和明亮模式之间进行切换。...你现在可以点击调试配置界面,动态改变模拟器的运行参数,比如这里改变主题模式到黑色,改变文字大小,更改辅助选项等等: 这样增强我们开发人员的调试能力,对于每次编码再调整的方式大大优化!...这样做有两个好处: 首先可以提高预览结果呈现的速度 其次在应用进入后台时,不会做一些额外的操作,只会做一些必要的操作,使应用快速进入睡眠状态,以节省耗电.

    3.2K10

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

    结合两年来我在SwiftUI中使用Core Data的经验和教训,我们将在本文中探讨: •导致SwiftUI预览崩溃的部分原因•如何在之后的开发中避免类似的崩溃出现•如何在Xcode中安全可靠地预览含有...预览在Xcode中的工作原理同标准的模拟器十分接近。但为了让它可以即时响应SwiftUI视图的变化,苹果对其做出了不少的修改。...预览模拟器不支持控制台输出显示、不支持断点调试,即使在动态预览模式下(支持交互的预览模式),我们也不会在Xcode中获得任何代码中的控制台输出内容。因此在预览发生问题时,用于排查故障的手段很有限。...在某些情况下,即使感觉上预览是正常(实际上数据没有刷新),通过切换到动态模式也会强制Core Data数据刷新。...在重启应用或重启预览后,数据会恢复成Bundle中的原始数据集(有时在预览模式下数据不会立即复原,需在几次动态模式切换后才会恢复)。

    5.2K10

    肘子的 Swift 周报 #027 | 苹果助你成为一日“百万富翁”

    前一期内容|全部周报列表 原创 @State 魅影:一个多窗口模式下 SwiftUI 应用的 Bug 分析[4] Fatbobman( 东坡肘子 )[5] 在本篇文章中,我们将探讨一个影响多窗口模式下...重构的结果令 Ryan 非常满意,尽管应用的包大小有所增加,但构建性能和 SwiftUI 预览方面均获得了显著提升。他希望这篇文章能为其他开发者在进行类似重构时提供启示和帮助。...在本文中,Alexander 介绍了如何解决使用 Xcode 预览时常见的问题,并建立一个有效的预览环境。...若要深入了解 Preview 功能的更多细节和技术背景,建议阅读 Behind SwiftUI Previews[14] 和 构建稳定的预览视图 —— SwiftUI 预览的工作原理[15]。...这在很大程度上是由于全球各地的开发者在没有实体设备的情况下,难以在模拟器中对手势操作进行测试。

    14510

    干货 | 关于SwiftUI,看这一篇就够了

    一、背景 苹果于2019年度WWDC全球开发者大会上,发布了基于Swift建立的声明式框架--SwiftUI,其可以用于watchOS、tvOS、macOS等苹果旗下产品的应用开发,统一了苹果平台的UI...其在SwiftUI中的作用。...在组合视图中,闭包中会处理大量的UI组件,FunctionBuilder是通过闭包建立样式,将闭包中的UI描述传递给专门的构造器,提供了类似DSL的开发模式。...因为,在 SwiftUI中这些属性的设置在内部都会用一个View来承载,然后在布局的时候就会按照上面示例的布局流程,一层层View的计算布局下来,这样做的优点是:方便底层在设计渲染函数时更容易做到monomorphic...在Xcode 11中提供了实时预览和静态预览两项功能,实时预览:代码的修改能够实时呈现在Xcode的预览窗口中;此外,Xcdoe还提供了快捷功能,通过command+鼠标点击组件,可以快速、方便地添加组件和设置组件属性

    10.5K11

    iOS应用黑暗模式设计终极指南(附套件下载)

    在所有超级令人兴奋的功能中,关于黑暗模式的部分最让我兴奋。对于那些在社交媒体上关注我的人,您可能知道我是“黑暗模式”的忠实粉丝。使用iOS 13后,人们可以选择采用深色系统外观。...03 系统背景色 根据准则,iOS的背景始终具有#000000的纯黑色。Google 则更喜欢深灰色,值为#121212。 ? 苹果将此背景称为“ 系统背景”。...需要注意,黑暗模式下的颜色不仅仅是与亮模式下的颜色相反。必须为所有元素分配一组单独的颜色,也就是说,你必须重新设计它们。 如下所示,在明亮模式下纯白色不会在黑暗模式下转换为纯黑色。...以我们以前面讨论的Base元素为例。在亮色模式下,颜色为纯白色#FFFFFF。但是在黑暗模式下,颜色是纯黑色#000000。 实现此效果要对其进行单独编码开发。...但是,这9种颜色在亮模式和暗模式下略有不同。如果您选择使用这些系统强调颜色,则该应用程序将自动将亮模式色调颜色更改为暗模式色调颜色。 ? 你会发现亮模式和暗模式下的颜色是稍有差异的,请务必注意。

    3.4K10

    WWDC - SwiftUI - 初恋般的感觉

    你可以通过Xcode新的实时反馈功能,来优化你的视图布局 。 第一节 创建一个使用SwiftUI的新Xcode项目。浏览画布、预览和SwiftUI模板代码。...要在Xcode中预览画布上的视图并与之交互,请确保您的Mac运行的是macOS 10.15 beta版。 macOS 10.15 beta版下载地址 Xcode 11下载地址 ?...现在我们来玩玩预览: 如果画布没有展示出来,可以通过 Editor > Editor and Canvas 显示出来。 第四步 把Hello World更改为Hello SwiftUI!...你可以MapKit中的MKMapView类来展示渲染地图界面。 在SwiftUI中要使用UIView或者其子类,你需要让你的view遵循UIViewRepresentable协议。...因为MKMapView是UIView子类,所以你需要把模式切换成live模式才能正常预览。 点击Live Preview切换预览模式。 ?

    3.8K10

    一键切换亮色模式和暗色模式,用Figma搞定!

    静电说:在本文中,我们将使用Figma来创建一个可以一键切换亮色模式和暗色模式设计的系统,非常简单快捷。同时,我们也可以在本文中学习到亮色模式和暗色模式在设计过程中的区别。本文来自Pixsellz。...但是,某些中性颜色风格是不变的,在任何一种模式下都不会改变。在Figma Design System中,我们选择了白色和黑色作为固定颜色,无论您使用哪种模式,该颜色都将保持不变。...1.可变样式 可变的颜色样式分别适用于亮和暗模式,并且它们都可以进一步细分为两个主要类别-颜色样式和效果样式。出于本文的目的,我们将主要讨论“亮”模式,并且在将这些步骤应用于“暗”模式时也稍作介绍。...这是因为,在黑暗模式下,背景已经完全为黑色,此时在黑色背景上使用100透明度的灰度颜色时,你的颜色会完全不可见。...请注意,在暗模式下,由于阴影颜色是暗的,因此可能看不到这种效果。 最后,Figma具有一个非常有用且功能强大的功能,称为“自动布局”。

    19.5K11

    从今天开始,用对 Android 新老 Camera APIs

    同时,上面的图 4、5、6、7 中,都没有看见噪点随曝光补偿有明显的变化,所以我们可以 在暗环境下放心使用曝光补偿值来提亮照片。...()方法设置测光区域为全屏,在华为荣耀9 机器上采用的是中央重点测光(拍摄内容为:黑色背景上放置一块白色横条,当白色横条在屏幕上部或下部时,得到的照片会比纯黑背景上暗,横条置于屏幕中部则为最暗的);在乐视...Max 900+ 上则是完全的中心测光(拍摄内容为:黑色背景上放置一块白色块,除非将白色块置于屏幕中央会使照片比纯黑背景的暗,将其置于屏幕任何其它地方,都和纯黑背景拍出的照片明暗一致)。...在 Camera2 中已经开放了设置相机预览/拍摄时的 ISO 的接口。...当被摄主体与背景有着强烈明暗反差,而且被摄主体所占画面的比例不大时,运用这种测光方式最合适,在舞台、演出、逆光等场景中这种模式最为合适。

    7.8K126

    PS图层混合模式实例详解

    在变暗模式中,查看每个通道的颜色信息,并选择基色与混合色中较暗的颜色作为结果色。...变暗模式导致比背景色更淡的颜色从结果色中去掉,如下图,浅色的图像从结果色中被去掉,被比它颜色深 的背景颜色替换掉了。...如下图,混合色为黑色的区域均显示在结果色中, 而白色的区域消失,这就是线性加深模式的特点。 7,深色混合模式 深色混合模式依据当前图像混合色的饱和度直接覆盖基色中暗调区域的颜色。...基色中包含的亮度信息不变, 以混合色中的暗调信息所取代,从而得到结果色。深色混合模式可反映背景较亮图像中暗部信息的表现, 暗调信息亮部信息。...在强光模式下,当前图层中比50%灰色亮的像素会使图像变亮;比50%灰色暗的像素会使图像变暗,但当前 图层中纯黑色和纯白色将保持不变。

    1.7K30

    Android 10.0正在来的路上!

    当然,这并不是黑暗模式第一次出现在Android系统之中,在目前的Android P中实际上已经能够实现这一效果,但是现阶段是通过比较取巧的壁纸激活方式。 ?...之所以说黑暗模式是许多用户期待的功能,是因为随着智能手机扎根在我们的生活中,在关灯之后继续躺在床上玩手机已然许多用户的习惯。...面对这一情况,许多APP都针对性的提供了夜间模式可供选择。通过更暗的背景、更低的亮度来让手机屏幕与环境的对比减弱,但APP只能管自己的一亩三分地,像通知栏、顶部信息栏、桌面等等在系统的管辖之下。...故而,让谷歌推出一个在全局条件下都能够适用的夜间模式,也就成为了用户的迫切需求。 ? 根据XDA的介绍,要启用黑暗模式,只需点击显示设置中的“设置黑暗模式”选项即可。...在纯黑色背景下,手机显示的内容依然会与背景形成一定的对比,而一贯对用户健康很重视的谷歌,采用这种设计,显然也是有所考量的。

    93350

    如何在网页设计中实现深色模式:增强用户体验

    此外,深色模式因其可能的节能特性而受到赞誉,尤其是在配备 OLED 面板的设备上,这些设备显示黑色像素所用的功耗比亮像素要少。 网页设计中的暗模式是什么?...称为“深色模式”(有时称为“夜间模式”或“深色主题”)的设计功能会修改用户界面的配色方案,使其主要使用深色或黑色背景以及浅色文本和图形元素。...这种设计决策与传统的灯光模式形成了鲜明的视觉对比,传统的灯光模式通常采用黑色文本和明亮的背景。...深色模式的主要特征 深色调色板:为了与屏幕上较亮的项目形成鲜明对比,深色模式通常使用黑色、深灰色或海军蓝色调作为背景颜色。...更好的可读性:将文本放在深色背景下可以使其更容易阅读,特别是对于对眩光敏感或有特定视觉障碍的人来说。与黑色背景形成鲜明对比的浅色文本经常用于深色模式设计中,以帮助用户在不疲劳的情况下感知和理解信息。

    27710

    一篇文带你了解黑暗UI模式的过去,现在和未来

    相反,当我们看到负极性的东西时,更少的光进入眼睛,导致我们的瞳孔扩大:事物变得模糊。黑色背景上的白色文字会显得更大,并产生光晕…… 这是因为一个字母发出的光被其他字母反射。这导致了负极性难以阅读。...这种情况下,它是没有切换黑暗模式和浅色模式的选择的,因为它仅仅是一种设计选择。 ? 手表官网设计 我们还必须承认,有些人确实患有无法使用亮色模式。视力障碍或畏光的人将从黑暗模式中受益匪浅。...另外,在Android系统中,有一个非常有用的功能,称为“允许强制深色”。基本上,这是Android的自动暗模式。它会与黑暗模式兼容,虽然不完美,但是看起来还不错。...文字颜色也是如此:避免使用纯白色,而应将其与Alpha配合使用(Material Design建议透明度为87%)以减少强烈的对比度。(静电说:但是苹果的背景却是纯黑色的,摊手~) ?...链接与纯文本几乎没有区别,因此很难找到大段文字中的隐藏链接。 ?

    1.4K50

    百行代码变十行,苹果SwiftUI可视化编程让开发者惊呼完美

    而对于开发者来说,新发布的 SwiftUI 可能是最吸引人的特性,在 Craig Federighi 的演示中,我们可以轻松地把一百行的前端代码缩减到十几行。...当我们在设计面板时,我们编辑的所有内容都与左边编辑器的代码完全同步。当我们修改预览(preview)时,对应代码可实时生成,也就是说我们对预览修改的内容能实时体现在代码中。...Xcode 会立即重新编译你的修改,并将它们插入到 APP 的运行版中。因此在整个开发中,预览可视化与代码可编辑性能同时支持并交互。 ?...Xcode 会通过「动态替换」在实时 APP 中交换编辑的代码,这是 Swift 中的新特征。...预览:现在,我们可以创建任何 SwiftUI 视图的一个或多个预览,从而得到样本数据,并配置几乎用户能看到的所有内容,例如大字体、定位或「暗黑模式」等。

    4.1K10
    领券