【发布时间】:2021-12-04 09:28:08
【问题描述】:
在我的相机视图中,我想将方向保持为纵向,因为当它处于横向时,相机预览不会旋转:
struct CameraPreview: UIViewRepresentable {
@ObservedObject var camera: CameraModel
func makeUIView(context: Context) -> some UIView {
let view = UIView(frame: UIScreen.main.bounds)
camera.preview = AVCaptureVideoPreviewLayer(session: camera.session)
//...
camera.preview.videoGravity = .resizeAspectFill
camera.preview.frame = view.frame
view.layer.addSublayer(camera.preview)
// starting session
camera.session.startRunning()
return view
}
func updateUIView(_ uiView: UIViewType, context: Context) {
}
}
我知道我迟早需要解决这个问题,但我需要行动起来。现在,我将阻止所有其他方向,除了:
struct CameraView: View {
init() {
let value = UIInterfaceOrientation.portrait.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
}
[..]
通过执行上述操作,当放置在横向时,相机预览会减半,然后 init “开始”将其设置回 CameraView 回到纵向。如何让它在没有任何动画的情况下保持纵向模式?
将代码放在.onAppear 中没有任何作用:
struct CameraView: View {
var body: some View {
VStack{..}
.onAppear(perform: {
let value = UIInterfaceOrientation.portrait.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
}
}
【问题讨论】: