You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SwiftUI中@State变量对应图标改为SF Symbols的Touch ID图标?

解决SwiftUI菜单栏Touch ID图标切换问题

错误原因分析

你遇到的问题大概率是两个原因:

  1. SF Symbols图标名称错误:Touch ID相关图标采用小写+点的命名规则,比如touchid.circle、touchid.circle.fill,如果拼写错误(比如写成touchID、touch-id)会导致图标加载失败。
  2. 变量逻辑不匹配:原代码用数字字符串拼接图标名,切换Touch ID图标时,这种拼接逻辑不再适用,需要直接对应正确的图标名称。

修复后的代码示例

如果是要切换Touch ID的「未验证/已验证」状态图标,可参考以下代码:

import SwiftUI

@main
struct swiftui_menu_barApp: App {
    // 用布尔值标记验证状态,默认未验证
    @State var isAuthenticated: Bool = false
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        MenuBarExtra(
            // 菜单栏标题随状态切换
            isAuthenticated ? "已验证" : "未验证",
            // 对应不同状态的Touch ID图标
            systemImage: isAuthenticated ? "touchid.circle.fill" : "touchid.circle"
        ) {
            Button(isAuthenticated ? "标记为未验证" : "标记为已验证") {
                isAuthenticated.toggle()
            }
        }
    }
}

额外提示

  • 可以通过Mac上的SF Symbols官方App查看所有可用图标,确认Touch ID相关图标的准确名称。
  • 如果需要切换更多Touch ID相关图标,只需修改systemImage参数对应的图标名即可,确保名称完全匹配SF Symbols的命名规则。

内容的提问来源于stack exchange,提问作者untitled

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:38:27