我想显示一个带有数字的SwiftUI图像。我可以这样做:
let number = 13 Image(systemName: "\(number).square.fill")
但是,并不是每个数字都有SF符号-如果我想显示134.square.fill,但发现没有SF符号,导致应用程序崩溃,该怎么办?如何在不使应用程序崩溃的情况下检查SF符号是否存在?
134.square.fill
9lowa7mx1#
下面的代码将显示问号符号,如果一个数字不存在。但你可以调整它做任何事情。
struct ContentView: View { var body: some View { let number = 144 return VStack { Image(uiImage: UIImage(systemName: "\(number).square.fill") ?? UIImage(systemName: "questionmark.square.fill")!) } } }
p4rjhz4m2#
在我自己经历过这种情况之后,@kontiki的回答确实给了我一个良好的开端,但在他的解决方案中,我们应用于图像的修改器将不起作用,所以这是我的方法:我们创建一个函数,返回一个String而不是Image:
func safeSystemImage(_ systemName: String) -> String { let image = "\(systemName).square.fill" return UIImage(systemName: image) != nil ? image : "" // ← The image you want in case it doesn't exist. }
使用方法:
Image(systemName: safeSystemImage(yourImage))
这样我们就可以改变它的颜色、大小等等。
2条答案
按热度按时间9lowa7mx1#
下面的代码将显示问号符号,如果一个数字不存在。但你可以调整它做任何事情。
p4rjhz4m2#
在我自己经历过这种情况之后,@kontiki的回答确实给了我一个良好的开端,但在他的解决方案中,我们应用于图像的修改器将不起作用,所以这是我的方法:
我们创建一个函数,返回一个String而不是Image:
使用方法:
这样我们就可以改变它的颜色、大小等等。