TL; DR: Es scheint, dass die Ansichtshierarchie für die iPad Pro Bildschirmgröße bis viewWillLayoutSubviews:
nicht eingestellt und viewDidLayoutSubviews:
aufgerufen wird. Wann dies vom Layoutsystem aufgerufen wird, hängt von der Konstruktion Ihrer Ansichtshierarchie ab.
Bei der Aktualisierung meiner App für iPad Pro sehe ich auch ähnliches Verhalten. Daher habe ich mir die Lebenszyklus-Ereignisse von View-Controllern genauer angeschaut, um zu sehen, was sowohl in meinem bestehenden Projekt als auch in einem neuen Projekt passiert.
Für ein brandneues Projekt, das einen View-Controller verwendet, der nur eine Navigationsleiste (direkt unter der Statusleiste) und eine primäre Ansicht (bei aktiviertem Auto-Layout den Rest des Raums) enthält, im Landschaftsmodus a la die folgende Screenshot:

ich die folgende Ausgabe von der Konsole für den view-Controller-Lebenszyklus zu sehen:
-[ViewController viewDidLoad] self.navigationBar: .frame: {{0, 20}, {1024, 44}}; .bounds: {{0, 0}, {1024, 44}}
-[ViewController viewDidLoad] self.primaryView: .frame: {{0, 64}, {1024, 704}}; .bounds: {{0, 0}, {1024, 704}}
-[ViewController viewWillAppear:] self.navigationBar: .frame: {{0, 20}, {1024, 44}}; .bounds: {{0, 0}, {1024, 44}}
-[ViewController viewWillAppear:] self.primaryView: .frame: {{0, 64}, {1024, 704}}; .bounds: {{0, 0}, {1024, 704}}
-[ViewController viewWillLayoutSubviews] self.navigationBar: .frame: {{0, 20}, {1024, 44}}; .bounds: {{0, 0}, {1024, 44}}
-[ViewController viewWillLayoutSubviews] self.primaryView: .frame: {{0, 64}, {1024, 704}}; .bounds: {{0, 0}, {1024, 704}}
-[ViewController viewDidLayoutSubviews] self.navigationBar: .frame: {{0, 20}, {1366, 44}}; .bounds: {{0, 0}, {1366, 44}}
-[ViewController viewDidLayoutSubviews] self.primaryView: .frame: {{0, 64}, {1366, 960}}; .bounds: {{0, 0}, {1366, 960}}
-[ViewController viewDidAppear:] self.navigationBar: .frame: {{0, 20}, {1366, 44}}; .bounds: {{0, 0}, {1366, 44}}
-[ViewController viewDidAppear:] self.primaryView: .frame: {{0, 64}, {1366, 960}}; .bounds: {{0, 0}, {1366, 960}}
von dem, was ich hier sehen kann, die Aussicht beginnt mit einem wi dth von 1024 Punkten, aber sobald 'viewDidLayoutSubviews' ausgeführt wurde, wurde die entsprechende Größe ermittelt (1366 Punkte).
In meinem eigenen Projekt für einen Bildschirm, der eine Split-View-Controller verwendet, kann ich ein ähnliches Verhalten sehen:
-[XYZViewController viewDidLoad] self.navigationBar: .frame: {{0, 20}, {1024, 44}}; .bounds: {{0, 0}, {1024, 44}}
-[XYZViewController viewWillLayoutSubviews] self.navigationBar: .frame: {{0, 20}, {1024, 44}}; .bounds: {{0, 0}, {1024, 44}}
-[XYZViewController viewDidLayoutSubviews] self.navigationBar: .frame: {{0, 0}, {1366, 44}}; .bounds: {{0, 0}, {1366, 44}}
-[XYZViewController viewWillLayoutSubviews] self.navigationBar: .frame: {{0, 0}, {1366, 44}}; .bounds: {{0, 0}, {1366, 44}}
-[XYZViewController viewDidLayoutSubviews] self.navigationBar: .frame: {{0, 0}, {1366, 44}}; .bounds: {{0, 0}, {1366, 44}}
-[XYZViewController viewWillAppear:] self.navigationBar: .frame: {{0, 0}, {1366, 44}}; .bounds: {{0, 0}, {1366, 44}}
-[XYZViewController viewWillLayoutSubviews] self.navigationBar: .frame: {{0, 0}, {1366, 44}}; .bounds: {{0, 0}, {1366, 44}}
-[XYZViewController viewDidLayoutSubviews] self.navigationBar: .frame: {{0, 20}, {1366, 44}}; .bounds: {{0, 0}, {1366, 44}}
-[XYZViewController viewWillLayoutSubviews] self.navigationBar: .frame: {{0, 20}, {1366, 44}}; .bounds: {{0, 0}, {1366, 44}}
-[XYZViewController viewDidLayoutSubviews] self.navigationBar: .frame: {{0, 20}, {1366, 44}}; .bounds: {{0, 0}, {1366, 44}}
-[XYZViewController viewDidAppear:] self.navigationBar: .frame: {{0, 20}, {1366, 44}}; .bounds: {{0, 0}, {1366, 44}}
In diesem Fall, da die Hierarchie Ansicht unterscheidet, wird viewWillLayoutSubviews:
früher in der angerufene View Controller-Lebenszyklus und die richtige Größe wurde bereits durch die Zeit viewWillAppear:
wird aufgerufen. Aber wie Sie sehen können, hängt dies wirklich von Ihrer Ansichtshierarchie ab - daher würde ich empfehlen, dass Sie Ihre Ansichtshierarchie bestätigen und dann den besten Speicherort zum Hinzufügen Ihres auflösungsabhängigen Codes bestimmen.
Gibt es Neuigkeiten zu diesem Problem? Ich habe das gleiche Problem. Egal was ich mache, ich bekomme ständig 1024 * 768 im iPad Pro Simulator. –
@GergelyKovacs für jetzt habe ich keine Ahnung, wie es funktioniert. Ich werde nächste Woche auf dieses Thema zurückkommen. Ich werde die Ergebnisse beschreiben, wenn ich etwas interessantes finde. –
@AlexanderBalabanov - Können Sie uns weitere Informationen zu dem Problem geben, das Sie erfahren, damit wir Ihnen helfen können? Ich bin auch für die Fehlerbehebung bei iPad Pro zuständig und möchte sicherstellen, dass wir alle angemessen unterstützen können. Wo führen Sie Ihre NSLog-Anweisung aus, um die Ansichtsgrenzen anzuzeigen? Verwenden Sie Auto-Layout? Wenn Sie uns etwas mehr Kontext von dem geben können, was Sie erfahren, dann können wir hoffentlich alle zusammenarbeiten, um zu helfen, dies zu lösen. –