Come progettare le schermate Paesaggio e Ritratto iPad con layout diversi utilizzando la classe Dimensioni. Sono riuscito a trovare solo w-regular e h-regular per entrambi gli orientamenti. Esempio: Ho bisogno di allineare 2 viste in verticale in verticale e in orizzontale nel paesaggio con dimensioni della ClasseLayout orizzontale e verticale per iPad Layout diversi con Classe di dimensioni
risposta
Finalmente ho trovato una soluzione:
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
}
}
sembra essere l'intenzione di Apple per il trattamento di entrambi gli orientamenti iPad come lo stesso - - ma come molti di noi stanno trovando, ci sono motivi di design molto legittimi per voler variare il layout dell'interfaccia utente per iPad Portrait vs. iPad Landscape.
Tuttavia, si prega di consultare questa risposta per un altro approccio per adeguare classi dimensionali di fare quello che ci serve: https://stackoverflow.com/a/28268200/4517929
Sto sviluppando l'App universale, in cui ho provato il tuo approccio. ha funzionato bene per iPad ma quando ho impostato i vincoli per w: Any, h: Any I am getting ** Impossibile soddisfare simultaneamente i vincoli. ** errore –
Per Swift 3 sarebbe simile a questa:
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)
}
Si useranno wRhC invece di wRhR per dispositivi iPad in modalità orizzontale. Inserisci questo codice nel controller della vista di base, cioè questa regola funzionerà per tutti i controller presentati da questo. si può inserire qualsiasi condizioni aggiuntive qui ... Per esempio, se si desidera che la regola di poter lavorare solo per specifici controller della vista, il vostro se operatore sarebbe simile a questa:
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)
}
È possibile che si verifichino conseguenze indesiderate. Ad esempio, se questo controller di visualizzazione mostra un altro controller di visualizzazione modale come un foglio modulo, verrà visualizzato come se fosse su un iPhone - a schermo intero in verticale - che probabilmente non è quello che desideri. Inoltre, mentre è aperto, se si ruota in orizzontale, tornerà allo schermo non intero e rimarrà in questo modo quando si ritorna al ritratto. Non è una piacevole esperienza. – Michael
- 1. Come si specificano layout diversi per orientamento verticale e orizzontale?
- 2. Layout diversi per orizzontale e verticale per un'app per Android?
- 3. Verticale per telefono, orizzontale per tablet (layout Android)
- 4. Layout e dimensioni automaticheForChildContentContainer
- 5. Android: layout xml alternativo per modalità orizzontale
- 6. Android force Layout orizzontale (orizzontale)
- 7. Layout verticale Java?
- 8. Layout orizzontale Android
- 9. due diversi layout per un'attività
- 10. D3 Circle Pack Layout con disposizione orizzontale
- 11. QT - Aggiunta di widget per layout orizzontale
- 12. Lavorare con AutoLayout in verticale e orizzontale
- 13. Susy: utilizzare layout diversi per dimensioni dello schermo diverse
- 14. Centro verticale di gestione layout Java
- 15. Come creare layout diversi per Galaxy S3 e Nexus 7?
- 16. mailer di rails con layout diversi
- 17. Come posso impostare un layout orizzontale solo per i tablet?
- 18. Posso usare l'autolayout per fornire diversi vincoli per l'orientamento orizzontale e verticale?
- 19. Due viste, una sotto l'altra in verticale e affiancate in orizzontale utilizzando i vincoli di layout
- 20. Creazione di ViewHolders per ListViews con layout di elementi diversi
- 21. Android, orizzontale e di scorrimento verticale per GridLayout
- 22. Come scorrere il layout della tabella in orizzontale e verticale in Android
- 23. Applicazione universale con orientamento verticale per iPhone e orientamento orizzontale per iPad
- 24. utilizzando layout diversi per un intero controller
- 25. Layout multipli per diversi moduli - Zend Framework
- 26. Layout memoria classe CLR
- 27. Gestisci il layout all'interno di un radiogruppo con orientamento orizzontale
- 28. Layout su diversi modelli di cellulari
- 29. Restrizione di layout su una classe di layout non standard
- 30. Utilizzare layout diversi per moduli diversi zend framework 2
per l'iphone è possibile crea 2 layout per diversi orientamenti usando la classe size. Come possiamo ottenere questo per iPad usando Size Class e Autolayout? –
Hai trovato una soluzione? Ho lo stesso problema. – cmii
In realtà questa è una domanda specifica. E nessuna Apple non ha progettato classi dimensionali per abilitare una classe di dimensioni specifiche per iPad, il che non ha assolutamente senso per me, dal momento che poi devi gestire manualmente l'orizzontale nel codice. Non sono d'accordo con alcuni degli approcci che incidono sul sistema delle classi di grandezza. Basta gestirlo nel codice. – n8tr