检查顺丰符号是否存在Swift
Check if SF Symbol exists Swift
我想显示带有数字的 SwiftUI 图像。我可能会这样做:
let number = 13
Image(systemName: "\(number).square.fill")
但是,并非每个数字都有 SF 符号 — 如果我想显示 134.square.fill
但发现没有,导致应用程序崩溃怎么办?
如何在不使应用程序崩溃的情况下检查 SF 符号是否存在?
如果数字不存在,以下代码将显示问号符号。但是你可以调整它来做任何事情。
struct ContentView: View {
var body: some View {
let number = 144
return VStack {
Image(uiImage: UIImage(systemName: "\(number).square.fill") ?? UIImage(systemName: "questionmark.square.fill")!)
}
}
}
我遇到这种情况后,@kontiki 的回答确实给了我一个先机,但在他的解决方案中,我们对图像应用的修改器不起作用,所以这是我的方法:
我们创建了一个 returns 字符串而不是图像的函数:
func safeSystemImage(_ image: String) -> String {
let image = "\(image).square.fill"
if UIImage(systemName: image) != nil {
return image
} else {
return "" // ← The image you want in case it doesn't exist.
}
}
用法:
Image(systemName: safeSystemImage(yourImage))
这样我们就可以改变它的颜色、大小等……
我想显示带有数字的 SwiftUI 图像。我可能会这样做:
let number = 13
Image(systemName: "\(number).square.fill")
但是,并非每个数字都有 SF 符号 — 如果我想显示 134.square.fill
但发现没有,导致应用程序崩溃怎么办?
如何在不使应用程序崩溃的情况下检查 SF 符号是否存在?
如果数字不存在,以下代码将显示问号符号。但是你可以调整它来做任何事情。
struct ContentView: View {
var body: some View {
let number = 144
return VStack {
Image(uiImage: UIImage(systemName: "\(number).square.fill") ?? UIImage(systemName: "questionmark.square.fill")!)
}
}
}
我遇到这种情况后,@kontiki 的回答确实给了我一个先机,但在他的解决方案中,我们对图像应用的修改器不起作用,所以这是我的方法:
我们创建了一个 returns 字符串而不是图像的函数:
func safeSystemImage(_ image: String) -> String {
let image = "\(image).square.fill"
if UIImage(systemName: image) != nil {
return image
} else {
return "" // ← The image you want in case it doesn't exist.
}
}
用法:
Image(systemName: safeSystemImage(yourImage))
这样我们就可以改变它的颜色、大小等……