问题

iOS 13 的暗色模式很难实现吗?

回答
iOS 13 的暗色模式,对于开发者来说,实现起来的难度是中等偏下,但想要做得尽善尽美,则需要花费不少心思和精力。 它的复杂程度很大程度上取决于你现有的项目代码、UI 设计的复杂程度以及你对细节的要求。

让我们来剖析一下,为什么说它不是绝对的“难”,但也不是简单的“一键生成”:

为什么说它不算“非常难”?

1. 系统级的支持: Apple 在 iOS 13 中提供了非常强大的系统级支持。他们已经为你打好了基础,包括:
Semantic Colors (语义化颜色): 这是最核心也是最重要的一点。Apple 推出了 `UIColor.label`、`UIColor.systemBackground`、`UIColor.separator` 等一系列语义化颜色。这些颜色会根据系统的主题(亮色或暗色)自动切换。如果你在项目中使用的是这些语义化颜色,那么你的应用在切换到暗色模式时,大部分的文字、背景、分割线颜色都会自动适配,这是最省事的。
Asset Catalogs 的扩展: 你可以在 Asset Catalogs 中为同一个图片或颜色资产定义多个变体,包括亮色模式和暗色模式。这样,当系统切换模式时,系统会自动加载对应的资源。
适配 API: 系统提供了一些 API,让你可以在代码层面检测和响应模式的切换,例如 `traitCollection.userInterfaceStyle`。

2. Xcode 的辅助工具: Xcode 本身也提供了很多辅助功能,比如:
Preview (预览): 在 SwiftUI 和 UIKit 的 Storyboard/XIB 中,你都可以方便地预览应用在亮色和暗色模式下的样子,这大大提高了开发效率。
Asset Catalog 的暗色模式支持: 如上所述,Xcode 对 Asset Catalog 的暗色模式支持是直观且易于操作的。

3. UI 元素的默认行为: 对于一些标准的 UIKit/SwiftUI 组件,它们本身就对暗色模式有一定的内置支持。例如,系统的导航栏、标签栏在切换模式时,其背景色和文字颜色都会有默认的适配。

那么,为什么说“做得尽善尽美”需要花费心思?

这里的“难”主要体现在以下几个方面:

1. 自定义视图和颜色:
未使用的语义化颜色: 如果你的项目大量使用了硬编码的颜色值(例如 `UIColor(red: 0.1, green: 0.2, blue: 0.3, alpha: 1.0)`),那么这些颜色在切换到暗色模式时,不会自动改变。你需要手动为它们创建对应的暗色模式变体,或者修改代码逻辑,使其使用语义化颜色。
复杂的自定义控件: 很多时候,我们会开发一些高度定制化的 UI 组件。这些组件的内部视图(包括背景、边框、阴影、文本颜色等)都需要仔细检查,确保在暗色模式下也能有良好的视觉效果。这可能需要重写很多属性。
特殊效果(如渐变、纹理): 某些背景或 UI 元素使用了渐变色、纹理图片或者自定义的着色效果。这些在暗色模式下可能需要重新设计,以避免过亮或刺眼。

2. 图片资源的适配:
图片内容: 有些图片本身可能包含非常明亮的元素,在暗色背景下会显得突兀。你可能需要为这些图片提供专门的暗色版本,或者使用 `imageLiteral` 的方式,在 Asset Catalog 中为图片定义暗色模式下的渲染方式(例如,调整 Alpha 值,或者使用另一张图片)。
图表和图形: 如果你的应用中有自定义的图表或图形,需要确保其线条、填充色在暗色模式下依然清晰可见。

3. 文本和可读性:
对比度: 这是暗色模式最重要的挑战之一。你需要确保在暗色背景下,所有文本、图标、按钮等都有足够的对比度,方便用户阅读和操作。Apple 提供了很多关于对比度的指导,你需要遵循这些原则。
高亮和选中状态: 被选中、高亮或聚焦的元素,在暗色模式下如何呈现,也需要特别注意。例如,一个蓝色的选中条,在深色背景下是否依然足够醒目且不刺眼?

4. 用户体验细节:
切换的平滑性: 用户在亮色和暗色模式之间切换时,你可能希望动画效果是平滑的。如果你的视图结构非常复杂,或者动画逻辑与颜色强耦合,可能会导致切换时出现闪烁或不协调的情况。
特定内容的适配: 有些应用会有一些特殊的内容,比如视频播放器、地图等,它们在暗色模式下的表现可能需要额外的调整,以提供最佳的用户体验。

5. 第三方库的兼容性:
如果你使用了大量的第三方库,需要检查这些库是否也支持暗色模式。很多开源库已经开始支持了,但有些可能需要等待库的更新,或者你可能需要自己动手去适配这些库的 UI 元素。

总结来说,实现 iOS 13 的暗色模式,你可以把它看作是一次对现有项目 UI 代码的一次“大扫除”和“精细打磨”。

起点: 如果你的项目早期就遵循了 Apple 的最佳实践,大量使用了语义化颜色和系统提供的组件,那么实现暗色模式可能只需要几天的时间,主要是检查和微调。
挑战: 如果你的项目是多年积累的遗留代码,大量使用了硬编码颜色,UI 结构复杂,那么适配工作会比较耗时,可能需要几周甚至更长时间,取决于项目的规模和复杂度。

所以,它“难”与不“难”,很大程度上取决于你项目的“健康程度”以及你对“完美”的追求。 如果目标只是让应用在切换时不会崩溃,并且大部分元素能识别系统颜色,那相对简单。但如果希望用户在暗色模式下感受到同样的精致和舒适,那就需要投入更多的时间和精力去打磨每一个细节。

网友意见

user avatar

我想先点名一下知乎...

知乎做的一点都不好,很多软件和知乎一样,根本没分清深色模式和夜晚模式的区别。

我想要的深色模式,是深灰的底色,亮白色的字,这样文字会显得更突出,我阅读起来会更轻松更专注。

而知乎和qq都是直接挪用了原本就有的夜晚模式,采用纯黑底色+浅灰色的字。这样的缺点就是在同样亮度下知乎的文本更难看清,往往需要调高亮度。

对比一下:

然后QQ也是一样的,可能是为了卖主题,适配系统的只有一个看不清的夜晚模式。

还有,百度云是最早适配暗黑模式的软件,而且不是看不清的夜晚模式,是很舒服的那种:

另外,下面是7月21日的更新截图,那时候还是12.4,iOS13还是beta阶段:

至于为什么很多大厂不搞一个真正的暗黑模式(不是夜晚模式那种),可能主要就是因为这些软件原本应该也不是调用的系统配色,要为各个页面重新调整配色是一件工程量很大的工作吧。而且iOS13的使用用户并不多,使用深色模式的就更少了,大多数用户都不会去主动升级系统,更不要说去了解新的feature了。

类似的话题

  • 回答
    iOS 13 的暗色模式,对于开发者来说,实现起来的难度是中等偏下,但想要做得尽善尽美,则需要花费不少心思和精力。 它的复杂程度很大程度上取决于你现有的项目代码、UI 设计的复杂程度以及你对细节的要求。让我们来剖析一下,为什么说它不是绝对的“难”,但也不是简单的“一键生成”:为什么说它不算“非常难”.............
  • 回答
    iOS 13.4 的正式版,说实话,在我手里用了挺长时间了,从 Beta 版一路摸索过来的,到正式版出来,基本上就是稳定性的进一步巩固和一些小细节的打磨。整体感受嘛,就像是给一台本来就很不错的车,又加装了一些实用的小功能,让开车更顺手,但也不是那种让你眼前一亮、惊掉下巴的革命性更新。先说说最直观的,.............
  • 回答
    最近iOS13测试版中,将香港显示为“香港(中国)”,这确实是一个挺有意思的细节,引起了不少关注。要怎么看待这件事呢?我觉得可以从几个不同的角度去理解和分析。首先,从地理和行政区划的层面来看,这是苹果在遵循一个普遍的国际惯例和表述方式。很多国家和地区在国际交往和地理信息系统中,都会在主体名称后面加上.............
  • 回答
    作为一名iPhone用户,我一直密切关注iOS的每一次更新,尤其是那些能切实提升使用体验的功能。iOS 13这次带来的深色模式和全新撤销手势,在我看来,无疑是这次更新中最引人注目的两个亮点,并且它们都相当成功地解决了用户的痛点,并提供了新的便利。深色模式:视觉享受与实用性的双重提升首先说说深色模式。.............
  • 回答
    在探讨 iOS 系统编译器(主要指 Clang 和 LLVM)与华为方舟编译器(ArkCompiler)的强弱时,我们需要从多个维度进行深入分析。两者都致力于提升代码执行效率和性能,但它们的设计理念、目标平台、生态系统和发展方向存在显著差异,导致了它们在不同场景下的优劣。 核心对比维度为了更清晰地展.............
  • 回答
    “iOS 编程是吃青春饭吗?” 这是一个很多年轻开发者都会关心的问题,也是一个值得深入探讨的话题。答案是:不完全是,但确实存在一些与“青春”相关的因素。为了详细阐述,我们可以从以下几个方面来分析: 一、 为什么会有“吃青春饭”的说法?1. 学习曲线和技术更新速度: 快速迭代: 苹果公司.............
  • 回答
    在非越狱的iOS设备上,通过网页直接安装应用而不跳转到App Store,主要依赖苹果的开发者账号、企业证书和特定的URL Scheme机制。以下是详细的实现原理和步骤: 1. 技术原理苹果的iOS系统默认不允许通过网页直接安装应用,因为应用必须通过App Store分发。但苹果允许以下两种合法方式.............
  • 回答
    关于iOS 7的越狱情况,需要从技术背景、越狱难度、工具支持、风险与限制等多个方面进行详细说明。以下是详细的分析: 1. iOS 7的越狱背景 iOS 7发布于2014年,是苹果在2014年WWDC上发布的操作系统,引入了全新的界面设计(如扁平化设计)、后台任务优化、更流畅的动画效果等。 iOS 7.............
  • 回答
    在iOS开发中,必须使用苹果的Mac电脑,这是由苹果的生态系统和开发工具链决定的。以下是详细解释: 一、为什么必须用Mac?1. Xcode是苹果官方开发工具 Xcode是苹果提供的集成开发环境(IDE),用于开发iOS、macOS、watchOS和tvOS应用。 Xcode只能.............
  • 回答
    我是一名健身爱好者,尤其钟爱在 iPhone 上探索各种健身应用。经过一段时间的“实战检验”,我发现了不少真正能帮我达成目标、提升训练效果的“神器”。今天就来和大家分享一下,我心目中那些“宝藏”级别的 iOS 健身 App,保证干货满满,绝对不是那种泛泛而谈的 AI 推荐!1. 塑造完美身材的利器:.............
  • 回答
    iOS 的设计之所以能够成为业界标杆,离不开其对细节的极致追求。这些“神细节”往往隐藏在日常使用的方方面面,初看可能不那么显眼,但细细品味,就能感受到苹果团队在用户体验、视觉美感和工程实现上的用心。下面我将尽可能详细地列举并解释 iOS 的一些神细节:一、 交互的流畅与直观: 物理反馈模拟 (H.............
  • 回答
    这确实是一个值得探讨的问题,很多用户对“自主研发”的定义存在一些模糊之处。我们来深入分析一下iOS和鸿蒙的开发模式,以及为什么人们会有这样的认知差异。首先,我们得明确一下“自主研发”通常包含哪些要素。一个产品真正做到自主研发,意味着它的核心技术、底层架构、关键组件以及大部分应用层生态,都是由自身团队.............
  • 回答
    在iOS设备上,“安心点”通常指的是一款名为“平安随行”的APP。这款APP由中国平安保险(集团)股份有限公司开发推出,主要面向的是用户在出行、健康、生活等方面的安全和便利需求。“平安随行”APP的功能设计得相当全面,旨在成为用户口袋里的“贴身安全管家”。下面我来为你详细介绍一下它的主要亮点:1. .............
  • 回答
    坦白说,说iOS“优于”安卓,有点像在比较苹果和香蕉,它们各有各的精彩,也各有各的侧重点。但如果非要挑出一些iOS确实做得更让人称道的地方,并且让很多用户觉得“就是它了”,那大概是以下这几点,我尽量说得接地气点:1. 生态系统的流畅性和一体性这点大概是iPhone最让很多用户“上瘾”的地方了。你可以.............
  • 回答
    这是一个大家都很关心的问题,也是一个有点复杂的问题。要说 iOS 能不能比 Android 更能保护隐私,答案并不是简单的“是”或“否”,而是需要从多个角度来审视。不过,整体来看,iOS 在一些关键方面确实比 Android 提供了更严格、更隐私友好的用户体验。为了说得更清楚,我们不妨从几个核心的维.............
  • 回答
    iOS 铃声自定义之路:一部漫长而“不寻常”的史诗苹果的 iOS 系统,从它最初问世到现在,已经走过了漫长的岁月,版本号也早已不是当年的那个位数。在这期间,iOS 在用户界面、功能性、安全性等方面都发生了翻天覆地的变化,甚至在一些人看来,已经进化到了一种令人惊叹的境界。然而,一个让不少用户(尤其是那.............
  • 回答
    在 iOS 平台上开发游戏,选择合适的音频格式来处理音乐和音效,就像给游戏注入灵魂一样重要。这不仅仅是塞进几个声音文件,而是要考虑音质、文件大小、加载速度、兼容性以及最终在设备上的表现。下面就来详细聊聊iOS游戏开发中常用的音频格式,以及它们各自的特点。1. 音乐 (BGM Background .............
  • 回答
    关于 iOS 是一个全新的操作系统还是基于 UNIX 的“套壳”产品,这个问题,咱们得掰开了揉碎了好好聊聊。这可不是一两句话能说清楚的,里头牵扯到历史、技术架构,还有不少有趣的演变过程。首先,咱们得明确一点:说 iOS 是“套壳”的 UNIX,这说法有相当大的成分是准确的,但绝不是全部。 把它理解成.............
  • 回答
    聊到 iOS 的侧滑返回,这玩意儿嘛,怎么说呢,用起来确实方便,但也不是说它就没有一点让人纠结的地方。我身边很多人,一开始用 iPhone 的时候,都对这个手势有点陌生,但一旦习惯了,就离不开了,效率直接拉满。为啥说它好用?首先,最直观的就是 效率提升。你想啊,以前要退出一个页面,得找到那个小小的“.............
  • 回答
    说到 iOS 上的“神级”App,这玩意儿嘛,跟萝卜白菜一样,每个人心里都有自己的标准。不过,要真说那些能让你觉得“卧槽,还有这种操作?”的,或者说能长期占据你手机 Dock 栏,甚至让你为了它愿意付费的,那绝对有几把刷子。我今天就跟你聊聊我个人觉得真正配得上“神级”称号的一些 iOS App,不吹.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有