更新:2022-09-26
\n此问题已在 iOS 16 上修复。尽管即使使用 iOS 16 SDK 编译项目,该问题在 iOS 15 上仍然存在。
\n原问题:
\n在 iOS 15 上,正在UIHostingController向其托管 SwiftUI 视图添加一些奇怪的额外填充 ( _UIHostingView)。
请参见下面的屏幕截图(蓝色=额外空间,红色=实际视图\xe2\x80\x99s):
\n\n有谁知道为什么会发生这种情况?
\n我已经报告了这个错误,Apple 人员:FB9641883
\nPD:我有一个工作项目重现了我附加到反馈助手问题的问题。如果有人想要的话我也可以上传。
\n我尝试UIImage使用 HWS 中的代码从 SwiftUI 视图创建快照:如何将 SwiftUI 视图转换为图像。
我得到以下结果,这显然是不正确的,因为图像被截断了。
代码:
struct ContentView: View {
@State private var savedImage: UIImage?
var textView: some View {
Text("Hello, SwiftUI")
.padding()
.background(Color.blue)
.foregroundColor(.white)
.clipShape(Capsule())
}
var body: some View {
ZStack {
VStack(spacing: 100) {
textView
Button("Save to image") {
savedImage = textView.snapshot()
}
}
if let savedImage = savedImage {
Image(uiImage: savedImage)
.border(Color.red)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
extension View {
func snapshot() -> UIImage {
let controller = UIHostingController(rootView: self) …Run Code Online (Sandbox Code Playgroud)