SwiftUI多平台开发如何同时预览iOS与macOS界面 无需切换Scheme
同时渲染iOS与macOS平台SwiftUI预览的实现方法
- 第一步:选中你的
MyView所在的Swift文件,在Xcode右侧「文件检查器」的Target Membership栏目下,同时勾选iOS和macOS两个目标的复选框,确保该文件会被两个平台的Target同时编译。 - 第二步:修改预览代码,移除平台条件编译判断,直接同时返回两个平台的预览实例即可,示例代码如下:
struct MyView_Previews: PreviewProvider { static var previews: some View { Group { MyView() .previewDevice(PreviewDevice(rawValue: "iPad Pro (11-inch) (3rd generation)")) .previewDisplayName("iOS 端") MyView() .previewDevice(PreviewDevice(rawValue: "Mac")) .previewDisplayName("macOS 端") } } }
- 注意事项:
- 该方案适配Xcode 14及以上版本,更低版本的Xcode可能存在多平台预览渲染异常的问题。
- 如果你的
MyView内部使用了平台专属的API,只需要在视图内部用#if os(iOS)/#else这类条件编译包裹差异代码即可,不要把条件判断加在预览外层,否则还是只会渲染当前Scheme对应平台的预览。
修改完成后不需要切换Scheme,Xcode的预览面板会自动同时渲染两个平台的预览效果,代码改动后两个平台的预览也会同步刷新。
内容的提问来源于stack exchange,提问作者Hundley
相关产品推荐
相关产品推荐

