È possibile utilizzare il metodo willAnimateRotationToInterfaceOrientation:duration:
sul UIViewController e poi riposizionare eventuali UIViews (o qualsiasi altro codice) per orizzontale o verticale. Per esempio.
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
// change positions etc of any UIViews for Landscape
} else {
// change position etc for Portait
}
// forward the rotation to any child view controllers if required
[self.rootViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
non è sicuro se la questione è ancora attuale, ma è possibile utilizzare il metodo objc swizzling per aggiungere il proprio codice nel codice 'del UIViewController'. Dovrebbe sembrare scambiare '-didRotateFromInterfaceOrientation:' con la tua implementazione che ha una chiamata al tuo metodo di gestione dell'orientamento modificato e una chiamata all'implementazione originale – medvedNick
@medvedNick Sembra ragionevole. Potrei chiamare il mio delegato, quindi chiamare l'implementazione originale. Potrei essere un po 'preoccupato per i potenziali effetti collaterali. –