Wird [UIScreen mainScreen] .bounds.size in iOS8 orientierungsabhängig?
Lief ich den folgenden code in iOS 7 und iOS 8:
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
BOOL landscape = (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight);
NSLog(@"Currently landscape: %@, width: %.2f, height: %.2f",
(landscape ? @"Yes" : @"No"),
[[UIScreen mainScreen] bounds].size.width,
[[UIScreen mainScreen] bounds].size.height);
Im folgenden wird das Ergebnis aus iOS 8:
Currently landscape: No, width: 320.00, height: 568.00
Currently landscape: Yes, width: 568.00, height: 320.00
Vergleich zu dem Ergebnis in iOS 7:
Currently landscape: No, width: 320.00, height: 568.00
Currently landscape: Yes, width: 320.00, height: 568.00
Gibt es keine Dokumentation, die Angabe dieser änderung? Oder ist es ein temporärer bug in iOS 8 APIs?
InformationsquelleAutor der Frage lwxted | 2014-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es ist die Ausrichtung-abhängig in iOS8, kein Fehler. Sie könnten Rückblick 214 von der WWDC 2014 für mehr Infos: "View-Controller Fortschritte in iOS 8"
Zitat aus der Präsentation:
UIScreen ist nun die Schnittstelle orientiert:
InformationsquelleAutor der Antwort vhristoskov
Ja, es ist die Ausrichtung-abhängig in iOS8.
Schrieb ich eine Util-Methode, um dieses Problem zu beheben, für apps die Unterstützung für ältere Versionen des OS.
InformationsquelleAutor der Antwort cbartel
Ja, in der Tat, der Bildschirm ist jetzt Orientierung abhängig in iOS 8. Manchmal ist es jedoch gewünscht, erhalten Sie eine Feste Größe-in das hochformat. Hier ist, wie ich es mache.
InformationsquelleAutor der Antwort MaxK
Ja, es ist nun abhängig von der Orientierung.
Ich bevorzuge die unten Methode, die Bildschirm-Größe in eine Orientierungs-unabhängigen Weg zu einigen der oben genannten Antworten, weil es einfacher ist und weil es nicht abhängig von der Ausrichtung code (der Staat, das sein kann, abhängig von der Zeit, in der Sie genannt werden) oder auf version überprüfen. Sie können die neue iOS-8-Verhalten, aber das wird funktionieren, wenn Sie es brauchen, um stabil auf allen Versionen von iOS.
InformationsquelleAutor der Antwort mnemia
Sich auf diese Frage beziehen, wie es mein problem gelöst, hier zwei definiert, die ich für Bildschirm-Breite und Höhe-Berechnungen:
Wenn Sie Unterstützung sowohl für iOS 7 und iOS 8, das ist die beste Lösung für dieses problem.
InformationsquelleAutor der Antwort Antoine
Können Sie
nativeBounds
(Orientierung-unabhängig)nativeBounds
Erkennen des Geräts Höhe:
Erkennen des Geräts Breite:
InformationsquelleAutor der Antwort Leo Dabus
Ist es nicht ein bug in iOS 8 SDK. Machten Sie Grenzen Schnittstelle Orientierung angewiesen. Nach Ihrer Frage, einen Hinweis oder Dokumentation auf diesen Umstand werde ich empfehlen, Sie zu beobachten
View Controller Advancements in iOS 8
es ist 214 Sitzung vom WWDC 2014. Der interessanteste Teil (nach deiner Zweifel) istScreen Coordinates
beginnt bei 50:45.InformationsquelleAutor der Antwort Julian Król
Ja, es ist die Ausrichtung-abhängig in iOS8.
Hier ist, wie können Sie eine concistent Art des Lesens heraus-Grenzen in einer iOS-8-Mode über SDK und OS-Versionen.
InformationsquelleAutor der Antwort hfossli
Meine Lösung ist eine Kombination von MaxK und hfossli. Ich habe diese Methode auf eine Kategorie von UIScreen und es hat keine überprüfung der version (das ist eine schlechte Praxis):
InformationsquelleAutor der Antwort Uzair Khan
Brauchte ich eine schnelle Helfer-Funktion gehalten, dass das gleiche Verhalten wie unter iOS7 iOS8 - dies erlaubte mir zu tauschen meine
[[UIScreen mainScreen] bounds]
nennt und nicht berühren anderen code...InformationsquelleAutor der Antwort Joe Booth
Den folgenden Verfahren verwendet werden können, finden Sie die Bildschirm-Grenzen für einen bestimmten Orientierung, unabhängig von der iOS-version. Diese Methode zurück, die Grenzen basierend auf der Bildschirmgröße des Geräts an, und geben die gleiche CGRect-Wert unabhängig von der iOS-version.
InformationsquelleAutor der Antwort Mohammed MT
Ist das, was ich verwendet, um zu berechnen die richtige rect:
InformationsquelleAutor der Antwort hhamm
Nur das hinzufügen der swift-version eine hervorragende cbartel Funktion beantwortet wurden.
InformationsquelleAutor der Antwort Martin Koles
Meine Frage bezog sich auf UIWindows Rahmen, die im Begriff war im minus.
So machte Sie den code wie unten im MyViewController
-(NSUInteger)supportedInterfaceOrientations Methode
Und seine Arbeit für mich es versuchen.
InformationsquelleAutor der Antwort Hardik Mamtora
Eine Sache, die ich bemerkt ist, die um der unterstützten Ausrichtungen in der Info.plist nicht egal. Ich hab das problem, diese Frage mit meiner app (das macht die Orientierung im code), aber ich habe nicht überall angeben, dass die Standardausrichtung Hochformat.
Dachte ich, die Standard-Orientierung war Portrait auf jeden Fall.
Neuordnung itens in Info.plist, putting-Porträt ersten, wieder das erwartete Verhalten.
InformationsquelleAutor der Antwort epx
Diese geben das Gerät korrekt in iOS7 und iOS8 beide,
//Sie können mehr Geräte als auch(ich.e.iPad).
InformationsquelleAutor der Antwort Zaid Pathan
iOS 8 oder der oberen
Lösung für diejenigen, die wollen, um herauszufinden, die Bildschirm-Größe in Punkten (3,5 Zoll Bildschirm mit 320 × 480 Punkte, 4.0 Zoll Bildschirm mit 320 × 568 Punkten, etc) wäre
InformationsquelleAutor der Antwort azimov
Verwendet leicht modifizierte mnemia die Lösung ist, dass man ohne iOS-version überprüfen, mit min - /max-on mainscreen Grenzen gesetzt.
Ich brauchte eine
CGRect
so bekamCGRect
vom mainscreen Grenzen und verändertsize.width=min(w,h)
,size.height=max(w,h)
. Dann rief ich, dass OS-unabhängig zu bekommenCGRect
Funktion an zwei stellen in meinem code, wo bekomme ich Bildschirm Größe fürOpenGL
, Berührungen. Vor dem Update hatte ich 2 Probleme - IOS-8.x im landscape-Modus anzeigen der position vonOpenGL
Ansicht war falsch: 1/4 der vollen Bildschirm in der linken unteren Teil. Und zweitens berührt zurückgegeben ungültige Werte. Beide Probleme wurden behoben, wie erläutert. Danke!InformationsquelleAutor der Antwort NoAngel