Questa domanda è strettamente su iOS9 +In 7.3/9/2 + Swift come disabilitare l'animazione di rotazione, quando il dispositivo ruota?
Diciamo che avete un app moderno ordinario (autolayout, storyboard, universale), che fa permettere a tutti i quattro posizioni di rotazione
si vuole che AutoRotate nel normale modo, quindi cambierà i tuoi nuovi layout basati su vincoli quando l'utente ruota il dispositivo da orizzontale a verticale
Ma si desidera semplicemente NO animazione durante la rotazione del dispositivo dell'utente. Volete semplicemente "fare clic" sul nuovo layout laterale o verticale.
L'unico modo che ho potuto ottenere questo è aggiungendo:
override func viewWillTransitionToSize(size:CGSize,
withTransitionCoordinator coordinator:UIViewControllerTransitionCoordinator)
{
coordinator.animateAlongsideTransition(nil, completion:
{_ in
UIView.setAnimationsEnabled(true)
})
UIView.setAnimationsEnabled(false)
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator);
}
a un controller vista, un massimo o quasi massimo VC che detiene il resto delle viste contenitore o qualunque in la scena.
Questa è fondamentalmente la stessa antica idea dell'uso di willRotateToInterfaceOrientation/didRotateFromInterfaceOrientation (entrambi ora inutilizzabili nel moderno iOS) per attivare le animazioni on-off.
Tuttavia ci sono molti problemi
questo non funziona AppWide, è un casino, è scena a base di
sembra molto inappropriato girare appena fuori tutte le animazioni
è possibile vedere tutti i tipi di pista
Questa domanda è strettamente su iOS9 +
In questi giorni, c'è un modo migliore per disattivare le animazioni di rotazione in un'app che supporta paesaggio/ritratto ???
Questa domanda è strettamente su iOS9 +
Per quale versione di iOS è? –
Ciao @LukeVanIn grazie, certamente iOS9. Nota la prima frase! – Fattie
Funziona sul simulatore ma non su un dispositivo reale (ipad). 'UIView.areAnimationsEnabled()' restituisce 'true' all'interno del blocco di animazione, che mi lascia perplesso (come in effetti è disabilitato prima). Deve esserci un problema di temporizzazione con il blocco dell'animazione di rotazione ... (doc di "setAnimationsEnabled" afferma: "_ Questo metodo riguarda solo le animazioni inviate dopo la chiamata. Se si chiama questo metodo mentre le animazioni esistenti sono in esecuzione, tali animazioni continuano in esecuzione fino a raggiungere il loro endpoint naturale._ ") – lazi74