Swift 检查 SF 符号是否存在

Div*_*Div 6 image swift swiftui sf-symbols

我想显示带有数字的 SwiftUI 图像。我可能会这样做:

\n\n
let number = 13\nImage(systemName: "\\(number).square.fill")\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,并不是每个数字都有一个 SF 符号 \xe2\x80\x94 如果我想显示134.square.fill但发现没有一个,导致应用程序崩溃怎么办?

\n\n

如何检查 SF 符号是否存在而不导致应用程序崩溃?

\n

kon*_*iki 6

如果数字不存在,以下代码将显示问号符号。但你可以调整它来做任何事情。

struct ContentView: View {
    var body: some View {
        let number = 144

        return VStack {
            Image(uiImage: UIImage(systemName: "\(number).square.fill") ?? UIImage(systemName: "questionmark.square.fill")!)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 当您使用“Image(uiImage: UIImage(....))”时,您将失去应用“foregroundColor”和“font”等属性的能力。如果你想保留这些,那么你应该检查`UIImage(systemName: ...)`是否返回nil,然后直接使用`Image(systemName: ...)`加载它我个人不喜欢这种加载图像两次,但似乎你不能两者兼得。 (2认同)