🎭 Gala

Gala 是一个 Swift Package Manager 项目,适用于 macOS、iOS、tvOS 和 watchOS,它可以帮助你创建 SwiftUI 预览变体。

例如,如果你想以亮色和暗色模式渲染你的预览,你可以使用 NightAndDay

   static var previews: some View {
       NightAndDay {
           ContentView()
       }
   }

Gala demo

如果没有 Gala,这需要写成这样:

    static var previews: some View {
        Group {
            ContentView()
                .environment(\.colorScheme, .light)

            ContentView()
                .environment(\.colorScheme, .dark)
        }
    }

或者:

    static var previews: some View {
        ForEach(ColorScheme.allCases, id: \.self) { scheme in
            ContentView()
        }
    }

但是,Gala 不止于此。它还提供了其他一些“属性迭代器”:

只需将它们替换为 NightAndDay 即可。

   static var previews: some View {
       LayoutDirections {
           ContentView()
       }
   }

Layouts(布局)

此外,你可以按照如下方式迭代给定的布局集合:

    static var previews: some View {
        Layouts([.fixed(width: 200, height: 150), .sizeThatFits, .device]) {
                ContentView()
        }
    }

如果你有一组想要用来设置视图的 frame,这将非常方便。

Devices(设备)

你也可以将一组设备传递给 Device 迭代器。

    static var previews: some View {
        Devices([.iPhoneX, .iPhone11]) {
                ContentView()
        }
    }

感谢自动完成功能,你无需记住精确的名称。请注意,我们已经特别注意将 Apple 出色的产品名称转换为标识符。例如:

感谢 Swift 对 Unicode 标识符的支持,你可以使用它们(并且感谢自动完成功能,你实际上可以输入它们 😅)。

你还可以使用 Devices.iPhonesiPadswatchestvs)来预览所有这些设备。

    static var previews: some View {
        Devices(.iPhones) {
                ContentView()
        }
    }

请注意,这些可能需要一段时间才能渲染,因此不建议用于经常使用的屏幕。但是,这非常适合用于单独的文件,你在其中设置营销照片并希望它们适用于所有设备。

Name parameter(名称参数)

所有迭代器都接受一个可选的 name 参数,该参数将添加一个 previewDisplayName,其中包含 name 和属性描述到预览中。

Contributing(贡献)

如果你发现任何问题或提出改进或扩展,请 fork 并提交 pull request。

你可以通过 Twitter电子邮件 与我联系。