Die Kamera-Vorschau (prototypisiert wie color.Blue In dem folgenden Code, um an der Vorderkante der sicheren Flächeneinsätze ausgerichtet zu werden (+/- wenige Punkte, wenn ich mich wünscht. Vstack/hstack Überlagerungsrahmen, um mit der Kamera -Vorschau auszurichten und zu übereinstimmen. Ich habe versucht, die Größe der beiden Ansichten mit OnGeOmetryChange zu holen, aber ich scheine eine falsche Größe für die Oberseite zu erhalten (
Code: Select all
Color.clear
Code: Select all
struct CameraUI: View {
@Environment(\.verticalSizeClass) var verticalSizeClass
@Environment(\.horizontalSizeClass) var horizontalSizeClass
@State var cameraViewSize:CGSize = CGSize.zero
@State var viewSize:CGSize = CGSize.zero
var body: some View {
Color.clear
.ignoresSafeArea()
.onGeometryChange(for: CGSize.self) { proxy in
proxy.size
} action: { newValue in
viewSize = newValue
}
.background {
Color.blue
.ignoresSafeArea()
.aspectRatio(verticalSizeClass == .regular ? 9.0/16.0 : 16.0/9.0, contentMode: .fit)
.offset(x:verticalSizeClass == .compact ? -(viewSize.width - cameraViewSize.width)/2 : 0)
//Need to inset with leading edge of Safe Area
.onGeometryChange(for: CGSize.self) { proxy in
proxy.size
} action: { newValue in
cameraViewSize = newValue
print("View size \(viewSize.width), Camera View size \(cameraViewSize.width)")
}
}
.persistentSystemOverlays(.hidden)
.overlay {
/* Need to have this VStack/HStack aligned with the Color.blue view */
VStack {
Spacer()
HStack {
Button("Button1") {
}
Spacer()
Button("Button2") {
}
}
}
}
}
}
#Preview {
CameraUI()
}