Inkonsistente Einfügung des oberen sicheren Bereichs für das iPhone im QuerformatIOS

Programmierung für iOS
Anonymous
 Inkonsistente Einfügung des oberen sicheren Bereichs für das iPhone im Querformat

Post by Anonymous »

Mir ist ein Problem mit der Einfügung des oberen sicheren Bereichs bei einem iPhone mit iOS 26 im Querformat aufgefallen. Konkret wird es mit der folgenden Konfiguration angezeigt:
  • Xcode 26.0 Beta 3, Swift 6, Mindestbereitstellungsziel 18.0
  • iPhone 16-Simulator mit iOS 26.0
Bei dieser Konfiguration beträgt der obere Einschub im Querformat manchmal 0 und manchmal 20, abhängig von der Ausrichtung des Geräts (Simulators). die App gestartet ist und ob die Ausrichtung geändert wurde. Mit anderen Worten: Der obere Einschub im Querformat ist inkonsistent.
Das Problem kann mit dem folgenden Code demonstriert werden, der einen GeometryReader verwendet, um die Bildschirmgröße und die Einschübe des sicheren Bereichs zu messen:

Code: Select all

struct ContentView: View {
var body: some View {
GeometryReader { geo in
VStack {
Text("\(geo.safeAreaInsets.top)")
Spacer()
HStack {
Text("\(geo.safeAreaInsets.leading)")
Spacer()
Text("\(String(describing: geo.size))")
Spacer()
Text("\(geo.safeAreaInsets.trailing)")
}
Spacer()
Text("\(geo.safeAreaInsets.bottom)")
}
.padding(.horizontal)
}
.border(.red)
}
}
Schritte zum Reproduzieren:
  • Starten Sie den Code auf einem iPhone 16-Simulator, beginnend im Hochformat.
  • Drehen Sie das Gerät ins Querformat. Beachten Sie den oberen Einschub.
  • Starten Sie den Code erneut, während sich das Gerät bereits im Querformat befindet. Vergleichen Sie den oberen Einschub mit dem Einschub aus Schritt 2.
  • Ändern Sie die Ausrichtung in Hochformat und dann wieder in Querformat. Vergleichen Sie den oberen Einschub noch einmal.
Einige Laufbeispiele:
❌ iOS 18.5: Oberer Einschub ist immer 0 -> OK

✔️ Xcode 16.4 + iPhone 16-Simulator mit iOS 26.0: Oberer Einschub ist immer 0 -> OK

✔️ Obwohl die Einschübe für verschiedene iOS-Versionen unterschiedlich sind, sind sie im Hoch- und Querformat konsistent. Also kein Problem.
Ich gehe davon aus (und hoffe), dass das Problem mit dem inkonsistenten Einschub auf einem iPhone ein Fehler ist, weil dadurch 5 % der Bildschirmhöhe unnötig verschwendet werden. Sollte es sich jedoch weiterhin um einen Fehler handeln, der nicht schnell behoben wird, wäre ich an einer Problemumgehung interessiert.
  • Eine Problemumgehung wäre, die Einfügung des oberen sicheren Bereichs zu ignorieren, wenn auf einem iPhone im Querformat ausgeführt wird, aber das scheint chaotisch zu sein.
  • Leider funktioniert das Hinzufügen eines .id-Modifikators zum GeometryReader nicht Hilfe:

Code: Select all

GeometryReader { geo in
// ...
}
.id(UUID()) // 👈 doesn't help
.border(.red)
Wie können die sicheren Bereichseinsätze für ein iPhone im Querformat konsistent gehalten werden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post