【问题标题】:SwiftUI Font.Design PickerSwiftUI 字体设计选择器
【发布时间】:2021-11-27 17:46:24
【问题描述】:

任何人都知道在 Picker 中循环 SwiftUI 的 Font.Design 的 4 个枚举值以便为界面选择它们的有效方法?

可能性:

case `default`
case monospaced
case rounded
case serif

例如:

Picker("Font design", selection: $vm.fontDesign, content: {
    ForEach(Font.Design, id:\.self) { design in
        Text(design.rawValue).tag(design)
    }
})

在 ViewModel 中:

@Published var fontDesign: Font.Design = .rounded

提前致谢!

【问题讨论】:

    标签: swiftui enums picker


    【解决方案1】:

    最终代码将如下所示(为了获取选择器的字符串值):

    extension Font.Design: CaseIterable {
        public static var allCases: [Font.Design] {
            [.default, .monospaced, .rounded, .serif]
        }
        var design: String {
            switch self {
                case .default:
                    return "default"
                case .monospaced:
                    return "monospaced"
                case .rounded:
                    return "rounded"
                case .serif:
                    return "serif"
                default:
                    return "default"
            }
        }
    }
    

    查看:

    Picker("fontDesign", selection: $vm.fontDesign, content: {
        ForEach(Font.Design.allCases, id:\.self) { font in
            Text("\(font.design)").tag(font)
        }
    })
    

    【讨论】:

      【解决方案2】:

      您需要扩展Font.Design 以符合caseIterable

      extension Font.Design: CaseIterable {
          public static var allCases: [Font.Design]{
              [.default, .monospaced, .rounded, .serif]
          }
      }
      

      【讨论】:

      • 非常感谢@Yrb!它就像一个魅力!很快(或迟到)我会在那里:)
      • 我确实只需要为我正在开发的应用程序做一个类似的。
      • 我确信通过扩展是可能的,但不知道过程。您的帖子有助于了解如何操作。再次感谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多