2015-04-18 18 views
9

Non sto utilizzando le classi di dimensione nel mio progetto e continuo a utilizzare i vecchi metodi per l'orientamento del controller di visualizzazione. Io sono sempre warning di deprecazione, come ad esempio quando uso codice qui sotto:InterfaceOrientation deprecato in iOS 8

if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) { 
     ... 
    } 

Ho cercato un sacco, ma non riuscivo a trovare il modo giusto per risolvere il problema. Eventuali suggerimenti ?

+0

Il modo per "risolverlo" è utilizzare i nuovi metodi. Perché non vuoi farlo? –

+0

"Non sto usando le classi di dimensioni nel mio progetto" Bene, c'è il tuo problema. Le informazioni relative all'orientamento ti vengono comunicate tramite 'traitCollection' come classi di dimensione. Ovviamente se ti rifiuti di guardarlo, non lo vedrai. – matt

+0

Come faccio a tradurre da UITraitCollection a UIInterfaceOrientation? Esempio, quale raccolta di tratti si riferisce all'orientamento orizzontale di sinistra? –

risposta

7

Dal iOS 8, Apple consiglia di utilizzare TraitCollections (classi dimensionali), invece di interfaceOrientation.

Inoltre, dal momento che iOS 9 e il nuovo iPad dispongono di "Multitasking", ci sono alcuni casi in cui l'orientamento del dispositivo non si adatta alle proporzioni della finestra! (Questo porta a frenare l'interfaccia utente dell'applicazione)

Tuttavia, a volte TraitCollections non soddisfa tutte le esigenze di progettazione. Per questi casi, Apple consiglia di confrontare limiti di vista:

if view.bounds.size.width > view.bounds.size.height { 
    // ... 
} 

sono stato molto sorpreso, ma è possibile controllare la WWDC 2015 il video Getting Started with Multitasking on iPad in iOS 9 a 21'15.

+0

Ma ho un problema con esso, non è in grado di distinguere tra paesaggio a sinistra e paesaggio a destra. Come ottengo quello? –

+0

Hai ragione @DeepakSharma, tuttavia le classi di dimensioni non consentono di distinguere tra paesaggio a sinistra e paesaggio a destra. Perché hai bisogno di questa informazione ? Se si desidera l'orientamento del dispositivo e non l'orientamento dello schermo, è possibile usare '[[UIApplication sharedApplication] statusBarOrientation]' – vmeyer

9

dovrebbe cambiare

if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) { 
    ... 
} 

a

if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) { 
    ... 
} 
Problemi correlati