XCode 14.3中SwiftUI预览未按PreviewProvider指定设备显示问题
解决Xcode 14.3中SwiftUI预览设备不按代码指定生效的问题
先确认代码写法是否正确
确保你的PreviewProvider代码完全符合规范,下面是正确的示例:
struct LandmarksList_Previews: PreviewProvider { static var previews: some View { ForEach(["iPhone SE (2nd generation)", "iPhone XS Max"], id: \.self) { deviceName in LandmarksList() .previewDevice(PreviewDevice(rawValue: deviceName)) .previewDisplayName(deviceName) } } }
- 重点核对
PreviewDevice传入的设备名称,必须和Xcode模拟器列表里的名称完全一致(包括空格、括号、大小写,不能有拼写错误) - 加上
.previewDisplayName(deviceName)可以在预览顶部显示设备名,方便你确认代码是否被正确识别
清理Xcode缓存
Xcode 14.3的缓存经常会导致预览异常,按以下步骤操作:
- 按
Cmd+Shift+K清理构建文件夹 - 关闭Xcode,删除
~/Library/Developer/Xcode/DerivedData目录下的所有文件 - 重启Xcode后重新构建预览
检查预览面板的设备锁定设置
如果预览面板的设备被固定,会直接覆盖代码里的指定:
- 打开预览面板,点击顶部显示的「iPhone 14」
- 确保选择的是「自动」选项,而不是固定的某台设备
确认目标模拟器已存在
如果Xcode里没有你指定的模拟器,预览会自动 fallback 到默认设备:
- 打开
Window > Devices and Simulators - 切换到「Simulators」标签,确认「iPhone SE (2nd generation)」和「iPhone XS Max」已添加;如果没有,点左下角的「+」创建对应模拟器
重置预览服务
要是上面的方法都没用,试试重置预览服务:
- 关闭所有预览窗口
- 打开
Xcode > Settings > Locations,点击「Derived Data」旁的箭头打开目录,删除整个文件夹 - 重启Xcode,重新打开预览
内容的提问来源于stack exchange,提问作者Uhlo
相关产品推荐
相关产品推荐

