Domanda

sto usando Questo.

Ho inserito questo nel punto in cui vengono aggiunte le immagini:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

Ho inserito queste sostituzioni in SlideShowViewController:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return YES;
}

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {


}

Si chiama il primo, ma non il secondo.

Non sto usando un pennino;utilizza un init personalizzato che restituisce un self.view con le 3 immagini su di esso.

Mi sto perdendo qualcosa?Quale sarebbe il modo migliore per modificare questo script per far sì che le foto orizzontali si estendano a tutta larghezza quando l'iPhone viene ruotato dall'utente?

Modificare:Ho appena provato ad aggiungere willAnimate...al Root View Controller del mio NavigationController, ma non viene richiamato.Forse il problema è il NavigationController?In tal caso, dove metto willAnimate...?In alternativa, come posso ricevere e trasmettere i messaggi inviati al viewController visibile?

Modifica 2:La causa dell'errore nell'argomento era che al TabBarController mancava una connessione in IB (che ero sicuro fosse presente).Quindi ora il mio problema è lo stesso di alcune altre domande simili: willAnimate...viene chiamato nel VC root ma non nei VC inviati.Il codice che ho utilizzato sfuma nella galleria VC anziché inserirlo, ad es.non viene inviato ma attualmente aggiunto come visualizzazione secondaria alla finestra, per riempire l'intero display.

Sarebbero apprezzati suggerimenti su come inviare un messaggio al controller della visualizzazione secondaria per impostare i frame o soluzioni alternative!

È stato utile?

Soluzione

Questa non è una risposta al perché il vostro "willAnimateRotation .." -. Metodo non grilletto, ma invece un'alternativa a come galleria di immagini in grado di adattarsi alle rotazioni si

In initWithImages aggiungere:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(didRotate:)
                                             name:UIDeviceOrientationDidChangeNotification object:nil];

Aggiungi questo metodo per ricevere la notifica. In didRotate è possibile gestire il ridimensionamento di riposizionamento delle immagini.

- (void) didRotate:(NSNotification *)notification
{   
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

    if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        NSLog(@"Landscape Left!");
    }
}

Non dimenticate di annullare la registrazione della notifica in dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];

maggio ho anche suggerire che si utilizza un UIScrollView invece di gestire lo scorrimento e gesti te stesso?

Altri suggerimenti

Is SlideShowViewController spinto direttamente nello stack controller di navigazione, o è parte di qualche altro punto di vista? I metodi UIView delegato ottenere tipo di disordine quando si lavora con subviews sulle viste nello stack Navigation Controller.

Se SlideShowViewController è solo una visualizzazione secondaria di qualche altro punto di vista che è stato inserito nello stack Navigation Controller, vorrei provare ad ascoltare per questo metodo nel controller della vista che in realtà è in pila controller di navigazione, e quindi chiamando il metodo appropriato in SlideShowViewController da lì.

Ho avuto un problema simile a ottenere viewWillAppear e metodo simile chiamato all'interno di un controller di navigazione.
Ho risolto chiamando manualmente quando il metodo viene chiamato radice.
Non so se è lo stesso problema con la rotazione, ma si può provare a mettere nella vista principale di controllo

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation duration:(NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.navigatioController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}

Immagino che sia stato un po' complicato rispondere a questa domanda, dato che riguardava la configurazione specifica della mia app non rudimentale.Scusate se ho lasciato scadere il tempo a disposizione per la ricompensa, praticamente era troppo tardi lo stesso giorno in cui l'ho chiesto ;)

Ho pensato di pubblicare questo messaggio "non sepolto nei commenti" per chiunque abbia gli stessi sintomi.

Il primo è stato che ho notato un IBOutlet che sono sicuro di aver collegato a un certo punto non era più connesso (Tab Bar Controller -> oggetto tabBarController).Dato che mi stavo scervellando e spostavo cose per farlo funzionare, probabilmente ciò era dovuto al fatto che avevo provato qualcosa e poi ripristinato un backup.

La seconda parte della soluzione consisteva nell'aggiungereSubView la visualizzazione della raccolta alla visualizzazione di tabBarController anziché alla visualizzazione navigata.Quindi il controller della vista root dovrebbeAuto...e sono stati invocati i metodi willAuto.

(Per nascondere la barra delle schede e la barra di navigazione durante la rotazione ho dovuto impostare il loro .alpha su 0 mentre la galleria era visualizzata, altrimenti la vista navigata era parzialmente nascosta sotto la barra di navigazione quando tornavo ad essa.Non sono riuscito a nascondere la barra di stato mentre mostravo la galleria.)

Successivamente è stata richiesta la possibilità di accedere alla galleria in una vista di dettaglio da un'altra scheda e ho ricevuto il complicato errore che solo mentre l'ALTRA vista di dettaglio (funzionante) veniva mostrata nell'altra scheda si ruotava automaticamente il lavoro con la nuova galleria.Torneremo alla soluzione a questo, è ora di smettere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top