SF 符号分层、调色板和多色渲染模式颜色?

2024-03-04

在 WWDC 2021 上,Apple 宣布了 SF Symbols 3,它将在 iOS 15 和 macOS 12 中支持新的多色 SF Symbols。

新的色彩渲染模式可通过图层注释增加符号的深度和强调
https://developer.apple.com/design/ human-interface-guidelines/sf-symbols/overview/ https://developer.apple.com/design/human-interface-guidelines/sf-symbols/overview/

在 UIKit 和 Swift 中创建这样的图像的语法是什么?

let configuration = UIImage.SymbolConfiguration(pointSize: 18, weight: .regular, scale: .large)
// set colors...?

let image = UIImage(systemName: "1.circle", withConfiguration: configuration)

如何使用新的hierarchical, palette, and multicolorUIKit 中的渲染模式?

这些新的渲染模式和颜色在 SF Symbols 3 应用程序中可见:


SwiftUI

分层的

Use the .foregroundStyle修饰符。

来自苹果: https://developer.apple.com/documentation/swiftui/symbolrenderingmode/hierarchical

SwiftUI 用前景样式填充第一层,其他层填充前景样式的二级和三级变体。您可以使用显式指定这些样式foregroundStyle(_:_:) and foregroundStyle(_:_:_:)修饰符。如果您仅指定主要前景样式,SwiftUI 会自动从该样式派生其他样式。



Image(systemName: "exclamationmark.triangle.fill")
   .symbolRenderingMode(.hierarchical)
   .foregroundStyle(Color.purple)
  

Palette

Use the .foregroundStyle以 2 或 3 种颜色作为参数的修改器。

来自苹果: https://developer.apple.com/documentation/swiftui/symbolrenderingmode/palette

在此模式下,SwiftUI 将图像中每个连续定义的图层映射到前景样式的下一个主要、次要和第三变体。您可以使用显式指定这些样式foregroundStyle(_:_:) and foregroundStyle(_:_:_:)修饰符。如果您仅指定主要前景样式,SwiftUI 会自动从该样式派生其他样式。



Image(systemName: "exclamationmark.triangle.fill")
   .symbolRenderingMode(.palette)
   .foregroundStyle(Color.yellow, Color.cyan) 
  

多色的

Use the .foregroundColor具有 1 种颜色的修饰符,以及.renderingMode(original).

来自苹果: https://developer.apple.com/documentation/swiftui/image/renderingmode(_:)

多色行为是通过使用原始模板渲染模式以及蓝色前景色来实现的。此模式使图形覆盖图像的独特部分的前景色。



Image(systemName: "person.crop.circle.badge.plus")
    .renderingMode(.original)
    .foregroundColor(.blue)
  

UIKit

分层的

Use the UIImage.SymbolConfiguration(hierarchicalColor:)初始化程序。

来自苹果: https://developer.apple.com/documentation/uikit/uiimage/symbolconfiguration/3810053-init



let config = UIImage.SymbolConfiguration(hierarchicalColor: [.systemTeal])
imageView.image = image.applyingSymbolConfiguration(config)
  

Palette

Use the UIImage.SymbolConfiguration(paletteColors:)初始化器和两个或三个调色板颜色。

来自苹果: https://developer.apple.com/documentation/uikit/uiimage/symbolconfiguration/3810054-init



let config = UIImage.SymbolConfiguration(paletteColors: [.systemTeal, .systemGray])
imageView.image = image.applyingSymbolConfiguration(config)
  

多色的

Use the UIImage.SymbolConfiguration(hierarchicalColor:)初始化器和preferringMulticolor().

来自苹果: https://developer.apple.com/documentation/uikit/uiimage/symbolconfiguration/3810052-configurationpreferringmulticolo

使用此方法(preferringMulticolor()) 获取符号的多色变体(如果存在)。此方法是检索多色符号的主要方法。

为了使此颜色配置生效,您的符号图像必须具有以下内容:

  • 其渲染模式设置为UIImage.RenderingMode.alwaysTemplate or UIImage.RenderingMode.automatic.

  • 多色注释。如果您的符号没有多色注释,则生成的图像是单色(模板)符号图像。如果将此配置与分层或调色板颜色配置结合使用applying(_:),生成的符号使用多色变体(如果存在),否则默认为层次结构或调色板变体。



let config = UIImage.SymbolConfiguration(hierarchicalColor: [.systemTeal]).preferringMulticolor()
imageView.image = image.applyingSymbolConfiguration(config)
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SF 符号分层、调色板和多色渲染模式颜色? 的相关文章

  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al
  • UITesting、XCTest 当前 ViewController 类

    简单的问题 我有一个按钮可以执行到下一个视图控制器的操作 我想写 UI XCTest 来告诉我它是否打开了我想要的视图控制器 UI 测试框架无法访问您的应用程序代码 这使得无法对实例进行类断言 你不能够directly告诉屏幕上的控制器的类
  • 是否可以更改枚举中的关联值?

    我正在使用 Swift 枚举 想知道是否有一种方法可以更改枚举的关联值 例如下面的代码尝试但失败了 enum myEnum case SomeCase Int mutating func someFunc switch self case
  • 检查 Swift 中关联类型是否符合协议

    在类似情况下 如何检查对象是否符合 可表示 协议 protocol Representable associatedtype RepresentType var representType RepresentType get set cla
  • 如何将自定义 C 代码放入 SwiftPM 包中?

    我正在尝试将 C 代码打包到 Swift 模块中 我们称之为CModule 一旦我将其放入项目的基本文件夹中 Swift模块 并配置了搜索路径 我可以在 Swift 文件中自动完成工作 并检测错误 警告 问题是 导入时它无法识别该模块 并且
  • 如何在 Swift 中使用未知密钥解码 JSON 响应?

    我想将数据拆分为https blockchain info ticker https blockchain info ticker这样每一行都是它自己的String在一个数组中 我正在制作一个获取所选货币价格的应用程序 因此 如果有人想要澳
  • 具有动态警报正文的快速本地通知

    所以我可以创建一个像这样的本地通知 var localNotification UILocalNotification localNotification fireDate NSDate timeIntervalSinceNow 7 loc
  • 如何去掉 UIWebView 上的状态栏背景?

    从 iOS 11 开始 当UIWebView全屏时 状态栏上会出现与屏幕颜色相同的假背景UIWebView背景 有人知道如何摆脱它吗 甚至添加IUWebView到故事板并使其全屏将使状态栏背景出现 我一直在尝试编辑 UIWebView 的大
  • 为什么在迭代字典时会出现“类型 [object] 的值没有成员 'lowercaseString'” 错误? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有几个对象 Struct object var title String var one object green v
  • UITableView 快速获取 titleForHeadersInSection

    我想在 UITableView 的部分中设置标题的标题 语法是什么swift设置该部分中标题的标题 func tableView tableView UITableView titleForHeaderInSection section I
  • 我们能否检测用户是否通过主页按钮或锁定按钮离开而没有监听 darwin 通知?

    我最近向应用程序商店提交了一个新的二进制文件并将其发送以供审核 但它立即被拒绝并显示以下消息 不支持的操作 不允许应用程序监听设备锁定通知 经过一番挖掘后 我发现我们无法使用 com apple springboard lockstate
  • 以编程方式从底部裁剪图像

    我正在开发自定义相机应用程序 一切进展顺利 但我在从底部裁剪图像时遇到了问题 即 裁剪后的图像与原始图像具有完全相同的宽度 但高度将为原始图像的 1 3 并且必须从底部开始 斯威夫特3解决方案 func cropBottomImage im
  • Xcode 10 Beta 5 — clang:错误:链接器命令失败,退出代码为 1

    有人可以帮我吗 我的项目一切正常 但更新到 Xcode10 Beta5 后 尝试在 iPhone 上运行该应用程序时出现此错误 然而模拟器可以工作 请帮助我 我已经对这个问题进行了网络搜索并发现this https stackoverflo
  • AWS S3 公共对象与私有对象?

    回到 S3 我的存储桶中有图像的 URL 我将在我的应用程序中呈现这些图像 但它们被设置为私有 当我尝试单击该链接时 它显示 访问被拒绝 当我将链接的设置更改为公共时 它会通过 但是我读到公共访问并不是最安全的事情 所以这本质上是一个由两部
  • 用于字数计算的 Swift String 中的字数

    我想做一个程序来找出字符串中有多少个单词 用空格 逗号或其他字符分隔 然后把总数加起来 我正在制作一个平均计算器 所以我想要数据总数 然后将所有单词相加 update Xcode 10 2 x Swift 5 或更高版本 使用基础方法enu
  • 检测 AVAudioPlayer 中的播放结束

    我有几个短的 mp3 声音 我将它们存储在数组中 并希望连续播放它们 有什么方法可以检测 AVAudioPlayer 何时停止播放 以便我可以调用完成处理程序并播放下一个声音 我知道有一个委托 但我正在使用 Playground 和 SKS
  • 如何防止Apple Watch进入睡眠状态?

    我们正在开发一个 Apple Watch 项目 但如果不被打扰 手表就会进入睡眠状态 有什么办法可以阻止它进入睡眠状态吗 据我所知和有关该主题的其他搜索 目前还没有api可通过编程方式启用或禁用 Apple Watch 的睡眠模式
  • 为什么这个谓词格式会变成 '= nil'

    有人建议这个线程 https stackoverflow com questions 40686005 nspredicate crash after swift 3 migration与我的问题完全相同 但是 我的应用程序没有崩溃 并且我
  • SKNode 上的 runAction 未完成

    我使用 NSOperation 子类来获取串行执行SKAction正如这个问题中所描述的 如何在 Swift 中子类化 NSOperation 以将 SKAction 对象排队以进行串行执行 https stackoverflow com
  • init 中的 Swift 通用约束

    我有通用的 我希望能够用特定的约束来初始化它 约束仅用于初始化 班里的其他人并不关心 这是一个简化的示例 struct Generic

随机推荐

  • 如果我在代码中犯了一个错误并导致JavaScript中出现无限循环并且它不断调用alert(),有没有办法停止循环?

    有时我使用调试代码来警告 javascript 中的某些内容 例如 匹配正则表达式中的某些内容 但忘记了修饰符 并且警报处于无限循环中 或者如果循环与模式匹配 300 次 如果使用 Firefox 警报会不断出现 甚至无法关闭选项卡 窗口或
  • 将 PDF 转换为图像,无需非 python 依赖项

    我想创建一个可以部署到其他计算机上的exe 该程序需要能够读取 pdf 并将其转换为图像 但我不希望其他用户必须下载依赖项 我的理解是 py2image 和 wand 都需要外部依赖项 如果您转换为 exe 其他用户也需要自己下载依赖项 还
  • Spring Remoting 序列化和反序列化

    我们在项目中使用 Spring Remoting 一段时间了 它与其他一些系统一起使用来访问我们的网络服务 我们目前正在研究网络服务采用的参数 但与此同时 我们正在努力独立于消费者 所以 目前我的问题是关于序列化和反序列化在 Spring
  • 将 Objective-C (#define) 宏转换为 Swift

    简而言之 我正在尝试转换 define宏转换为某种原生 Swift 数据结构 只是不确定如何或何种类型 Details 我想尝试并复制以下内容 define从 Objective C 到 Swift 资料来源 JoeKun FileMD5H
  • As3 复制对象

    有时我们需要克隆一个对象 但是如果一个显示对象有一些子对象并使用如下函数 function clone source var b ByteArray new ByteArray b writeObject source b position
  • Socket.io 1.0.5:如何保存会话变量?

    不幸的是 socket io 开发团队决定弃用函数 set 和 get 问题是这两个函数允许我们将变量保存到会话中 所以我的问题是 socket io 1 0 5 上的以下代码等效于什么 socket set mySessionVar my
  • 为什么 R 计算在我的虚拟机中不一致?

    我正在尝试构建一个新的虚拟机R以及下面的软件包作为R server根据我的计算 this is how I install my R packages function install packages folder dir create
  • 删除带有条件的
    标记的多个实例

    正如我在帖子中所说 我只是一个正则表达式学徒 一切都从这个线程开始 Stackoverflow 从预标记内部删除 br https stackoverflow com questions 30577912 remove br from in
  • 列表框多值选择

    我已经根据查询输出创建了表单 我使用了三个组合框和一个列表框 第一个组合框为我提供了部门列表 选择第二个组合框为我提供了该部门的位置 不同 第三个组合框为我提供了该位置的 不同 项目 然后下一个是显示该项目的一些代码的列表框 问题是我只能从
  • QCoreApplication 带有 WMI 的 QApplication

    我在MSDN网站上找到了一些WMI C 应用示例 我已经尝试过以下链接中的代码 http msdn microsoft com en us library aa390423 28v VS 85 29 aspx http msdn micro
  • R - 将 R 模型序列化为 JSON [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一些好的 R 包可以将预测模型和其他复杂对象与 JSON 相互转换 我从这个例子中得到了线性回归模
  • 如果下一个元素为空则隐藏该元素

    我有以下代码 h3 class hideIfDivEmpty title h3 div div 我想当 div 为空时隐藏 h3 元素 我愿意更改 html 结构 但 h3 必须位于 div 之外 因为它的内容是动态更改的 有没有办法在 C
  • 您可以从另一个线程访问 UI 元素吗? (未设置)

    我在 google here 上看到很多关于从另一个线程更新 UI 元素的线程 如果我只想获取复选框的值怎么办 我可以做到这一点而不需要做任何特别的事情吗 Edit 看来我得收回之前写的东西了 尝试了以下方法 添加了一个名为的文本框myTe
  • C++ 模板只是伪装的宏吗?

    我已经用 C 编程几年了 并且经常使用 STL 并且多次创建了自己的模板类来看看它是如何完成的 现在 我正在尝试将模板更深入地集成到我的面向对象设计中 一个挥之不去的想法不断浮现在我的脑海中 它们只是一个宏 真的 你可以使用 defines
  • 使用 Terraform 与 A​​zure VM 的 SSH 连接

    我已使用 Terraform 成功创建了一个 VM 作为 Azure 上资源组的一部分 下一步是在新机器中使用 ssh 并运行一些命令 为此 我创建了一个配置程序作为 VM 资源的一部分 并设置了 SSH 连接 resource azure
  • iPhone:显示带有导航栏的模态 UITableViewController

    我正在展示一个模态视图 它是UITableViewController班级 由于某种原因 当我显示导航栏时 它不会显示它 这是我的代码 SettingsCreateAccount detailViewController SettingsC
  • 使用 D3 设置下拉菜单的默认选择

    我创建了一个包含几个月的下拉菜单作为选项 但想预先指定一个选项作为默认值 然而 默认选择似乎顽固地保留在列表中的第一个选项 我尝试了下面的代码 这对我来说很有意义 因为对于任何其他属性 设置一个简单的比较就足以改变该属性的值 var def
  • 在名称为“appServlet”的 DispatcherServlet 中未找到带有 URI [/pms/j_spring_security_check] 的 HTTP 请求的映射

    我开发了一个 Spring 应用程序 并在其中实现了 Spring 安全集成到登录和注销功能 我使用 Spring security 和 xml 配置 但是当我登录系统时 它显示404 控制台告诉我 在名称为 appServlet 的 Di
  • 在同一个 Activity 中的两个 GridView 之间切换

    我一直在寻找如何解决几个问题 并得到了一些问题的答案 但有一件事仍在建设中 如果你们都不能帮助我 就不会完成 我一直在尝试放大和缩小 GridView 但转向了其他解决方案 因为我只需要两种状态 概述和详细视图 因此我制作了两个 Gridv
  • SF 符号分层、调色板和多色渲染模式颜色?

    在 WWDC 2021 上 Apple 宣布了 SF Symbols 3 它将在 iOS 15 和 macOS 12 中支持新的多色 SF Symbols 新的色彩渲染模式可通过图层注释增加符号的深度和强调 https developer