如何在SwiftUI Preview中截取预览窗口截图?
截取SwiftUI Preview窗口截图的方法
方法1:Xcode内置截图工具
- 在SwiftUI Preview界面,点击预览窗口右上角的相机图标(📷),Xcode会自动将当前预览内容保存为PNG格式图片,默认存放在你的Mac桌面。
- 该方法直接基于你配置的虚拟测试数据生成截图,完全不会调用模拟器或真机的自有数据。
方法2:Mac系统快捷键截图
- 若需要包含预览窗口边框的完整截图,使用系统自带快捷键:
- 截取全屏:
Command + Shift + 3 - 截取指定区域:
Command + Shift + 4,拖动鼠标框选预览窗口即可
- 截取全屏:
- 截图默认保存到桌面,按住
Control键同时按下快捷键,可将截图复制到剪贴板,直接粘贴到Figma中使用。
方法3:代码生成指定规格的高清截图
如果需要适配App Store的特定尺寸(如不同设备型号的截图要求),可以在Preview代码中添加截图逻辑:
struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() .previewDevice(PreviewDevice(rawValue: "iPhone 15 Pro")) .previewDisplayName("iPhone 15 Pro") .onAppear { // 生成截图并保存到桌面 guard let window = UIApplication.shared.windows.first else { return } let screenshot = window.rootViewController?.view.asImage() if let image = screenshot { let desktopURL = FileManager.default.urls(for: .desktopDirectory, in: .userDomainMask).first! let saveURL = desktopURL.appendingPathComponent("AppStore_Screenshot.png") try? image.pngData()?.write(to: saveURL) } } } } // UIView扩展:将视图转为图片 extension UIView { func asImage() -> UIImage { let renderer = UIGraphicsImageRenderer(bounds: bounds) return renderer.image { context in layer.render(in: context.cgContext) } } }
- 运行Preview后,代码会自动生成对应设备尺寸的高清截图并保存到桌面,完美适配App Store模板的尺寸需求。
内容的提问来源于stack exchange,提问作者Allen Wixted
相关产品推荐
相关产品推荐

