我在SwiftUI项目中有一个Swift包,其中包含UI组件的样式。此外,此包还包括一个资源文件夹,其中包含可用于样式化的资源。我可以通过图像的名称获取图像,但我想知道是否可以使用枚举访问图像。因为Xcode 15会自动为资产生成符号。
下面的例子可以解释我的意思:
public struct CheckboxToggleStyle: ToggleStyle {
@Binding var color: Color
let checked = Image("checkbox-checked", bundle: .module) // ✅ works
let unchecked = Image("checkbox-unchecked", bundle: .module) // ✅ works
let checked = Image(.checkboxChecked) // ❌ failed
let unchecked = Image(.checkboxUnchecked) // ❌ failed
public func makeBody(configuration: Configuration) -> some View {
(configuration.isOn ? checked : unchecked)
.renderingMode(.template)
.foregroundColor(color)
.onTapGesture {
withAnimation {
configuration.isOn.toggle()
}
}
}
字符串
}
1条答案
按热度按时间goqiplq21#
我是这么做的如果你想了解更多细节,请查看我的软件包
Iconoir
,地址为https://github.com/iconoir-icons/iconoir-swift/tree/main最后,您需要做的是定义一个名称不限的枚举,然后将所有相应的
Symbol Names
作为字符串赋给枚举,然后使用一个实用方法或枚举计算属性。从理论上讲,你也可以写一个脚本,它会自动获取所有的符号名并为你生成枚举,这就是我最终对Iconoir
所做的,因为我不可能手动输入1000多个枚举声明。枚举
字符串
实现
型
用法
型
其他想法
如果您没有太多的图像,而不是像我所做的那样创建一个扩展,您可以简单地添加一个计算属性来完成类似的事情,到您的枚举。
型