Il mio progetto attuale richiede alcune fantastiche animazioni tra le viste verticali e orizzontali dei dati. La rappresentazione dei dati è abbastanza complessa, quindi tra elementi grafici e dati, ci sono probabilmente circa 30 pulsanti ed etichette sullo schermo contemporaneamente. Ho creato un'interfaccia molto stretta ... ora sto definendo gli elementi per la vista del paesaggio. L'unico modo che ho trovato per fare questo finora è quello di porre in realtà la vista del paesaggio nel codice, per esempio:Esiste un metodo per disegnare visivamente * visuali doppie (panorama + ritratto) in Interface Builder?
-(void) positionViews {
UIInterfaceOrientation destOrientation = self.interfaceOrientation;
if (destOrientation == UIInterfaceOrientationPortrait || destOrientation == UIInterfaceOrientationPortraitUpsideDown) {
//---if rotating into PORTRAIT mode
timeBGbox.frame = CGRectMake(14, 88, 134, 14);
targetTime.frame = CGRectMake(0, 99, 150, 29);
energyBGbox.frame = CGRectMake(156, 88, 68, 14);
targetEnergy.frame = CGRectMake(154, 99, 70, 29);
speedBGbox.frame = CGRectMake(234, 88, 68, 14);
targetSpeed.frame = CGRectMake(226, 99, 48, 29);
speedLabel.frame = CGRectMake(264, 99, 40, 36);
} else {
//---if rotating to LANDSCAPE mode
timeBGbox.frame = CGRectMake(156, 12, 152, 14);
targetTime.frame = CGRectMake(160, 23, 150, 29);
energyBGbox.frame = CGRectMake(156, 50, 68, 14);
targetEnergy.frame = CGRectMake(154, 61, 70, 29);
speedBGbox.frame = CGRectMake(234, 50, 74, 14);
targetSpeed.frame = CGRectMake(228, 61, 48, 29);
speedLabel.frame = CGRectMake(269, 61, 40, 36);
}
}
Questo è un processo faticoso, prendendo molte prove per realizzare quello che ho potuto fare visivamente secondi in IB. Al momento, quando si passa da una visualizzazione all'altra in una IB e si spostano manualmente gli elementi in modalità orizzontale, al passaggio in verticale, si trovano nel posto sbagliato. Ho usato "molle e montanti" nel modo più creativo possibile, ma la maggior parte dei miei elementi ha bisogno di una precisa collocazione manuale oltre il regno di AutoSizing.
La mia domanda è: C'è una modalità di commutazione all'interno di IB che consente di sviluppare due layout grafici di una vista utilizzando gli strumenti di layout visivo, oppure il codice numerico è l'unico modo?
+1. Questo ha lo svantaggio che gli elementi non rimescolano le nuove posizioni con un'animazione, puoi solo animare la transizione tra le intere viste. – zoul
Lo farei con una terza vista, e in codice posizionare tutti gli elementi sulla vista "temporanea" ruotante usando i fotogrammi della vista verticale, quindi animare le posizioni a quella della vista orizzontale. Usa ancora la tecnica che io do, si espande semplicemente su di esso. È ancora possibile impostare la modalità orizzontale in IB per comodità. – Bogatyr
grazie Bogatyr ... per chiarimenti: stai dicendo che ogni etichetta e pulsante che devo affrontare ha bisogno sia di una versione _portrait che di _landscape? Quindi, in pratica, durante il mio codice aggiornerò contemporaneamente 2 visualizzazioni? – AcroYogi