Beheben Sie die Ausrichtung nur eine Ansicht in Swiftui auf PorträtIOS

Programmierung für iOS
Guest
 Beheben Sie die Ausrichtung nur eine Ansicht in Swiftui auf Porträt

Post by Guest »

Ich habe viele, viele Antworten darauf gesehen, aber bisher keine zufriedenstellende Antworten gefunden. Ich ziele auf iOS 17+ und möchte, dass eine der Subviews (für eine benutzerdefinierte Kamera -Vorschau) auf die Porträtausrichtung gesperrt wird, während alle anderen frei drehen können. Die benutzerdefinierte Ansicht für die Kameravorschau ist uiViewrePresentable , die ich mit der Porträtausrichtung gesperrt sein möchte. Für den Datensatz habe ich die folgenden Ansätze gesehen: < /p>
  • Implementieren eines AppDelegate < /code>, < /p>

    Code: Select all

     class AppDelegate: NSObject, UIApplicationDelegate {
    
    static var orientationLock = UIInterfaceOrientationMask.portrait //By default you want all your views to rotate freely
    
    func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    return AppDelegate.orientationLock
    }
    < /code>
    } < /p>
    < /li>
    < /ol>
    setzt die gesamte App jedoch auf die Porträtausrichtung als nur auf Die Ansicht. von nur einer Ansicht. Die Ansicht dreht sich zuerst und dann nicht verrottet und dreht dabei die gesamte Ansichtshierarchie und nicht nur die fragliche Ansicht. < /P>
    SampleBufferView(viewModel: camera, sampleBuffer: latestSample)
    .aspectRatio(verticalSizeClass == .regular ? 9.0/16.0 : 16.0/9.0, contentMode: .fit)
    .onAppear {
    if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
    scene.requestGeometryUpdate(.iOS(interfaceOrientations: .portrait)) { error in
    // Handle denial of request.
    }
    }
    }
    .onGeometryChange(for: CGSize.self, of: { proxy in
    proxy.size
    }, action: { newValue in
    requestOrientations(.portrait)
    })
    
    private func requestOrientations(_ orientations: UIInterfaceOrientationMask) {
    if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
    scene.requestGeometryUpdate(.iOS(interfaceOrientations: orientations)) { error in
    // Handle denial of request.
    }
    }
    
    }

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post