Domanda

Sto scrivendo un'applicazione di disegno che mostra un controller di visualizzazione strumenti quando l'utente fa clic su un elemento in una barra degli strumenti. Tuttavia, molti dei miei beta tester hanno riferito che il palato degli strumenti si apre troppo lentamente. Sto usando il presente presentModalViewController standard: animato: chiama per visualizzare gli strumenti, e ho provato a racchiuderlo in un blocco di codice come questo per accelerarlo:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 0.1];
[self presentModalViewController:settings animated:YES];
[UIView commitAnimations];

Sfortunatamente, non funziona. Se dici animato: NO funziona meglio, ma la vista della tela del disegno sottostante viene rimossa immediatamente (poiché il controller ritiene che non sia più visibile), quindi l'animazione si verifica su uno sfondo bianco.

Qualcuno ha già fatto questo prima che sarebbe disposto a offrire qualche consiglio? Lo apprezzerei!

È stato utile?

Soluzione

Una domanda simile viene posta qui .

Puoi anche cambiare la velocità usando questa tecnica, ma nella mia sperimentazione lo fa su uno sfondo bianco, come hai suggerito.

Altri suggerimenti

Modificato: aggiunta un'altra opzione con contenimento del controller per iOS 5 e versioni successive.

Un'altra soluzione è impostare lo spazio temporale del livello.

Questo viene fatto tramite la proprietà speed di CALayer. Per rallentare l'animazione, si potrebbe usare:

MytransparentVCViewController *vc = [[MytransparentVCViewController alloc] initWithNibName:@"MytransparentVCViewController" bundle:nil];
// Makes all animations 10 times slower
// To speed it up, set it to multiples of 1: 2 is 2 times faster, 3 is 3 times faster etc
vc.view.layer.speed = 0.1; 
[self presentModalViewController:vc animated:YES];

Nota che la soluzione proposta nel post collegato non funzionerà se il tuo obiettivo è cambiare la velocità di animazione del controller di visualizzazione modale che stai per presentare (ad esempio se usi UIModalTransitionStyleCoverVertical).

La velocità del layer non è un valore assoluto ma una funzione dello spazio temporale principale di quel layer (a meno che il layer non si trovi nella radice della gerarchia di layer ovviamente). Ad esempio, quando imposti la velocità di un livello su 2, le sue animazioni verranno eseguite due volte più velocemente rispetto alle animazioni del genitore di quel livello.

Un'altra opzione è utilizzare il contenimento del controller di visualizzazione. (solo iOS 5 e versioni successive)

http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW81 .

Hai il pieno controllo dell'animazione con la transizione di UIViewControllerFromViewController: toViewController: durata: opzioni: animazioni: completamento :.

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