这个软件包包含了一些我在开发 macOS 应用程序时经常使用的工具,无论我使用的是 SwiftUI 还是 AppKit。 这些工具可以帮助 Mac 应用开发者更好地利用 SwiftUI 预览。
默认情况下,Material
和其他依赖于应用程序处于活动状态才能正确渲染的视图在 SwiftUI 预览中看起来不太对劲,这使得迭代使用此类效果的详细设计变得困难。
只需链接 MacPreviewUtils 库,您就可以在 SwiftUI 预览中自动修复半透明效果。
无需任何代码,只需将您的应用目标(或它链接的目标之一)链接到 MacPreviewUtils。
该库包含 ProcessInfo
的一些扩展,可以在运行时使用它们来检查进程是否在 SwiftUI 预览中运行。 应该谨慎使用此方法,但在 SwiftUI 预览中运行的某些可能出现问题的应用程序行为进行调整时,它非常有用。
func doSomethingThatBreaksSwiftUIPreviews() {
guard !ProcessInfo.isSwiftUIPreview else { return }
// ...
}
有时您可能希望在外部显示器上查看 SwiftUI 预览,例如通过 Sidecar 连接的 iPad。 该库包含一个可以实现此功能的修饰符。
struct MyView_Previews: PreviewProvider {
static var previews: some View {
/// This preview will show up on the connected Sidecar display.
MyView()
.pin(to: .sidecarDisplay, alignment: .center, options: [.interactiveOnly])
}
}
断点非常适合在应用程序运行时进行调试,有时 print()
语句也可能是调试某些值随时间变化的好方法。 不幸的是,在 Xcode 预览中运行时,没有简单的方法可以查看应用程序的标准输出,除非您使用 OSLog
/NSLog
并在 Console 应用程序中进行过滤。
此库包含一个修饰符,可以在运行 Xcode 预览时显示一个小控制台窗口,使您可以使用 print
语句调试预览。
previewConsole()
也可以与上面提到的 pin(to:)
修饰符结合使用,在这种情况下,它将遵循该修饰符的显示和位置选择。
struct MyView_Previews: PreviewProvider {
static var previews: some View {
MyView()
.previewConsole()
}
}
注意:此修饰符仅显示应用程序的标准输出,因此不会显示使用
os_log
或Logger
记录的消息。 计划支持统一日志系统和 stderr。
不会!
此库中的大多数代码都位于 #if DEBUG
/#endif
语句中,因此它甚至不会包含在应用程序的发布版本中。
包含的修饰符仅设计用于 SwiftUI 预览,因此您不应直接在视图实现中使用它们。 但是,它们都会在执行任何操作之前检查代码是否在 SwiftUI 预览中运行,因此常规调试版本不会受到影响。
请务必在 SwiftUI 预览周围包含 #if DEBUG
/#endif
,这些预览也使用此库,以防止在为发布版本构建时出现编译器错误。