Wie iPad Landscape und Portrait-Bildschirme mit verschiedenen Layouts mit Größe Klasse zu entwerfen. Ich konnte für beide Orientierungen nur w-regulär und h-regulär finden. Beispiel: Ich brauche zwei Ansichten vertikal im Portrait auszurichten und horizontal in Landschaft mit GrößenklasseiPad Landscape und Portrait verschiedene Layouts mit Size Class
Antwort
Schließlich fand ich eine Lösung:
if traitCollection.verticalSizeClass == .Regular && traitCollection.horizontalSizeClass == .Regular {
var orientation:UIInterfaceOrientation = UIApplication.sharedApplication().statusBarOrientation;
if orientation == UIInterfaceOrientation.LandscapeLeft || orientation == UIInterfaceOrientation.LandscapeRight {
// orientation is landscape
} else {
// orientation is portrait
}
}
Es scheint, beide iPad Orientierungen als die gleiche Behandlung Apples Absicht zu sein - - Aber wie einige von uns feststellen, gibt es sehr legitime Design-Gründe, das UI-Layout für iPad Portrait vs. iPad Landscape zu variieren.
jedoch bitte diese Antwort für einen anderen Ansatz zur Anpassung der Größenklassen sehen zu tun, was wir brauchen: https://stackoverflow.com/a/28268200/4517929
Ich entwickle Universal App, in der ich Ihren Ansatz versucht habe. Es funktionierte gut für iPad, aber wenn ich Einschränkungen für w festlege: Beliebige, h: Beliebige, die ich bekomme ** Nicht in der Lage, gleichzeitig Einschränkungen zu erfüllen. ** Fehler –
Für Swift 3 es würde wie folgt aussehen:
override func overrideTraitCollection(forChildViewController childViewController: UIViewController) -> UITraitCollection? {
if UI_USER_INTERFACE_IDIOM() == .pad &&
view.bounds.width > view.bounds.height {
let collections = [UITraitCollection(horizontalSizeClass: .regular),
UITraitCollection(verticalSizeClass: .compact)]
return UITraitCollection(traitsFrom: collections)
}
return super.overrideTraitCollection(forChildViewController: childViewController)
}
Es wird verwenden wRhC anstelle von wRhR für iPad-Geräte im Querformatmodus. Setzen Sie diesen Code in Ihren Basisansicht-Controller, d. H. Diese Regel funktioniert für alle Controller, die von diesem Controller bereitgestellt wurden. können Sie stellen keine zusätzlichen Bedingungen hier ... Zum Beispiel, wenn Sie diese Regel wollen nur für bestimmte View-Controller zu arbeiten, Ihre wenn Betreiber würde wie folgt aussehen:
if UI_USER_INTERFACE_IDIOM() == .pad &&
childViewController is YourSpecificViewController &&
view.bounds.width > view.bounds.height {
let collections = [UITraitCollection(horizontalSizeClass: .regular),
UITraitCollection(verticalSizeClass: .compact)]
return UITraitCollection(traitsFrom: collections)
}
Sie können unbeabsichtigte Folgen dabei finden. Wenn dieser Ansichtscontroller z. B. einen anderen modalen Ansichtscontroller als Formularblatt anzeigt, wird er wie auf einem iPhone angezeigt - Vollbild im Hochformat - was wahrscheinlich nicht Ihren Vorstellungen entspricht. Darüber hinaus wird es, wenn es geöffnet ist, wenn Sie in die Landschaft drehen, auf den nicht vollen Bildschirm zurückkehren und bleibt auch so, wenn Sie zum Hochformat zurückkehren. Keine angenehme Erfahrung. – Michael
- 1. Landscape und Portrait Mode Layout Probleme
- 2. Media Queries für Portrait und Landscape
- 3. Xcode - Constraints auf dem iPad - Landscape vs Portrait
- 4. Ist @Page {size: landscape} veraltet?
- 5. Landscape nur iPad-Anwendung mit Mono Touch
- 6. Verschiedene Launchorientierungen für iPad und iPhone?
- 7. Unterstützung der Universal-App mit Portrait-Ausrichtung auf iPhone und Querformat + Portrait auf dem iPad
- 8. Programmgesteuert zwei verschiedene Layouts mit Größenklassen implementieren
- 9. Wie lege ich verschiedene Layouts für Hoch- und Querformat fest?
- 10. jQuery mobile Landschaft und Portrait Klasse
- 11. Verschiedene subview Layouts in viewDidLoad und viewWillAppear
- 12. Empfohlene Breiten für reaktionsschnelle Layouts
- 13. Medienabfragen für Smartphone Portrait, Landschaft und Desktop?
- 14. Verschiedene untergeordnete Layouts für verschiedene Gruppen ExpandableListView
- 15. Landscape Orientation auf dem iPad mit Sencha Touch 2
- 16. HTML-Seiten Größe nicht auf iPhone/iPad im Portrait
- 17. Größenklasse für iPad Hochformat und Landschaftsmodi
- 18. Zwei verschiedene Layouts (für vertikal und horizontal)?
- 19. verschiedene Layout & font-size in anderen Browser
- 20. Nur Statusleiste dreht sich zu Landscape (iPhone)
- 21. Susy: Verwenden Sie verschiedene Layouts für verschiedene Bildschirmgrößen
- 22. Zwei verschiedene Layouts für Gastbenutzer und angemeldeten Benutzer- Yii2
- 23. Phonegap Barcodescanner Portrait-Modus
- 24. Force "Landscape" Orientierungsmodus
- 25. Schiebefenster mit UiSplitview wie Gmail iPad App in Querformat und Portrait
- 26. Wie verschiedene UI-Elemente für iPhone und iPad mit Größenklasse
- 27. Android-Layouts kollidieren mit Layouts
- 28. Landscape search Textfeld und Tastatur Ausgabe
- 29. Wie zeigen Sie verschiedene Layouts in RecyclerView?
- 30. Layouts auf verschiedene Modelle von Mobiltelefonen
für iphone ist es möglich, Erstellen Sie 2 Layouts für verschiedene Ausrichtungen mit der Größenklasse. Wie können wir dies für iPad mit Größenklasse und Autolayout erreichen? –
Haben Sie eine Lösung gefunden? Ich habe das gleiche Problem. – cmii
Eigentlich ist das tatsächlich eine spezifische Frage. Und kein Apple hat keine Größenklassen entworfen, um eine für die iPad-Landschaft spezifische Größenklasse zu aktivieren, was für mich absolut keinen Sinn ergibt, da Sie dann manuell mit Landschaft im Code umgehen müssen. Ich stimme einigen Ansätzen nicht zu, die das Größenklassensystem hacken. Behandle es einfach im Code. – n8tr