Qual è il modo "giusto" per gestire i cambiamenti di orientamento in iOS 8?



Answers

Basato sulla risposta molto ben dettagliata (e accettata) di smileyborg, ecco un adattamento usando swift 3:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    coordinator.animate(alongsideTransition: nil, completion: {
        _ in
        self.collectionView.collectionViewLayout.invalidateLayout()
    })        
}

E nell'implementazione UICollectionViewDelegateFlowLayout ,

public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    // retrieve the updated bounds
    let itemWidth = collectionView.bounds.width
    let itemHeight = collectionView.bounds.height
    // do whatever you need to do to adapt to the new size
}
Question

Qualcuno può dirmi l'approccio "giusto" o "migliore" per lavorare con gli orientamenti di interfaccia verticale e orizzontale in iOS 8? Sembra che tutte le funzioni che voglio utilizzare a tale scopo siano deprecate in iOS 8 e la mia ricerca non ha trovato un'alternativa chiara ed elegante. Dovrei davvero guardare la larghezza e l'altezza per determinare da solo se siamo in modalità verticale o orizzontale?

Ad esempio, nel mio controller di visualizzazione, come dovrei implementare il seguente pseudocodice?

if we are rotating from portrait to landscape then
  do portrait things
else if we are rotating from landscape to portrait then
  do landscape things



Dal punto di vista dell'interfaccia utente, credo che l'utilizzo di Classi di dimensioni sia l'approccio consigliato da Apple per la gestione delle interfacce in diversi orientamenti, dimensioni e dimensioni.

Vedi la sezione: Tratti Descrivi la classe di dimensioni e la scala di un'interfaccia qui: https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html

"iOS 8 aggiunge nuove funzionalità che rendono la gestione delle dimensioni dello schermo e dell'orientamento molto più versatili."

Questo è anche un buon articolo: https://carpeaqua.com/thinking-in-terms-of-ios-8-size-classes/

EDIT Link aggiornato: https://carpeaqua.com/2014/06/14/thinking-in-terms-of-ios-8-size-classes/ (Credit: Koen)




Related