首页 > 其他分享 >SwiftUI简明概念(1):ForegroundColor VS ForegroundStyle

SwiftUI简明概念(1):ForegroundColor VS ForegroundStyle

时间:2024-09-27 17:51:15浏览次数:10  
标签:ForegroundColor Hierarchical 前景色 VS SwiftUI ForegroundStyle 图层

一、何谓前景色

在SwiftUI体系内,一个View可能包含一个或多个图层,那么最前面的一个图层就是ForegroundColor或ForegroundStyle作用的目标图层。当然这个图层可能不会响应前景色的要求:

如上图所示,Rectangle作为shape图层,能响应前景色要求,导致图层变成前景色。Button的作用图层是Text,也能响应前景色要求。Image的话,要看具体情况,对于例子中的SF symbol能改变其最前面图层的颜色;如果是普通图片,则设置前景色无效;如果Image图层之上通过overlay加了Text,那么Text成为最上面的图层,它能响应前景色要求。

二、ForegroundColor 和 ForegroundStyle

顾名思义,ForegroundColor只能设置颜色,而ForegroundStyle能设置样式,何谓样式?

SwiftUI中把Color、Gradient、Material、Hierarchical和Semantic五类视觉效果称谓样式。从这个角度看,ForegroundColor相当于ForegroundStyle使用Color的版本,说明ForegroundStyle更为强大。其中Gradient是渐变,Material是磨玻璃效果,两者比较好理解。Hierarchical和Semantic稍微麻烦一些。

Hierarchical意思是层次的,意味着给父View设置ForegroundStyle,会将ForegroundStyle传递给子View。.primary等同于传递过来的ForegroundStyle,而.secondary和其他几个会在前者基础上变得更浅。

Semantic是语义的意思,SwiftUI中把text, shapes, and template images (including symbols)作为前景元素,那么.foreground就是获取当前context中它们的颜色。同理.background和.selection分别获取背景和选中的颜色,而tint则是强调色。所谓的context,它不同于Hierarchical以父View作为参考,它是以整个APP的状态作为参照物,会考虑当前是处于深色还是浅色模式。例如Text 的ForegroundStyle设置为.foreground,则浅色模式时是黑色,深色模式时是白色,而background恰好相反。

三、参考

Dynamic Colors in SwiftUI using ShapeStyle in iOS 17 - Kyle Lanchman

标签:ForegroundColor,Hierarchical,前景色,VS,SwiftUI,ForegroundStyle,图层
From: https://blog.csdn.net/Mamong/article/details/142580035

相关文章

  • 山海鲸可视化 VS PowerBI,中外免费报表软件对比
    在数据分析与可视化的时代,选择合适的报表工具显得尤为重要。山海鲸可视化和PowerBI是市场上颇受欢迎的两款免费报表软件,各有特色。接下来,我们将从功能、优缺点等方面进行对比,帮助你找到最适合的工具。山海鲸可视化山海鲸可视化是一款国内自主研发的报表工具,专注于用户体验和简易......
  • 关于VSCode里需要用的一些插件总结
    在使用vscode编辑器的时候,经常需要安装一些插件来帮助我们进行开发,现在对可能用到的一些插件进行总结1.openinbrowser-------------在浏览器中打开,如果不装这个,无法在右键的时候在浏览器运行(必备)2.AutoRenameTag--------------修改HTML标签时,自动修改匹配的标签3. Aut......
  • 讯飞星火 VS chatgpt (366)
    引言随着人工智能和机器学习的飞速发展,回归预测在各个领域得到了广泛应用。回归模型用于预测连续变量的值,如金融市场的价格走势、气象预报中的温度变化等。本文提出了一种基于饥饿游戏搜索(HungerGamesSearch,HGS)优化随机森林(RandomForest,RF)的回归预测模型,简称HGS-RF。我......
  • HelpLook VS GitBook,在线文档管理工具对比
    在线文档管理工具在当今时代非常重要。随着数字化时代的到来,人们越来越依赖于电子文档来存储、共享和管理信息。无论是与团队合作还是与客户分享,人们都可以轻松地共享文档链接或通过设置权限来控制访问。在线文档管理工具的出现大大提高了工作效率和协作能力。本篇文章将会聚......
  • 文心一言 VS 讯飞星火 VS chatgpt (356)-- 算法导论24.2 2题
    二、假定将DAG-SHORTEST-PATHS的第3行改为:3forthefirst|V|-1vertices,takenintopologicallysortedorder。证明:该算法的正确性保持不变。如果要写代码,请用go语言。文心一言:首先,我们来证明将DAG-SHORTEST-PATHS算法的第3行从遍历所有顶点改为仅遍历拓扑排序后的前|V|-......
  • 使用VSCode进行Qt开发插件QtSupport
    使用VSCode进行Qt开发插件QtSupport使用VSCode进行Qt开发一般都是使用的官方插件Qttools,使用起来并不是太方便,所以我选择QtSupport插件。一、QtSupport功能可以创建项目导入基于CMake的qt项目可以添加Qt项目文件DesignerFormClassDesignerFormC++classTransla......
  • 学习011-03-01 Business Classes vs Database Tables(业务类与数据库表)
    BusinessClassesvsDatabaseTables(业务类与数据库表)TheXAFisbasedonanobject-baseddatahandlingapproach.Inthistopic,wediscussthereasonswhythisapproach,asopposedtotherelationalmodelofdatahandling,waschosen.Themethodsthatal......
  • 在 VS Code 中配置 C/C++ 开发环境(详细指南)
    前言VisualStudioCode(VSCode)是一个广泛使用的代码编辑器,支持多种编程语言,包括C和C++。本指南将详细介绍如何在VSCode中设置C/C++开发环境,适合新手。1.安装编译器1.1.Windows系统推荐使用MinGW-w64:下载MinGW-w64访问MinGW-w64官网。选择适合你系统......
  • 文心一言 VS 讯飞星火 VS chatgpt (355)-- 算法导论24.2 1题
    一、请在图24-5上运行DAG-SHORTEST-PATHS,使用结点r作为源结点。如果要写代码,请用go语言。文心一言:在Go语言中实现一个DAG(有向无环图)上的最短路径算法(例如,DAG-SHORTEST-PATHS,这通常可以通过简单的拓扑排序加动态规划或者简单的迭代方法来实现,因为DAG中没有环)并不复杂。但......
  • openvslam 跟踪速度监控
      [INFO][1727343970.856105940]:Processingflag:592.77[INFO][1727343970.856189819]:Processingpose:Position(3.20,0.88,-0.04),Orientation(-0.01,0.02,0.02,1.00)1速度模型匹配time耗费:(0.00304362)0.00327875[INFO][1727343971.909455546]:s......