Ho una transizione di lavoro utilizzando UIViewAnimationTransitionCurlUp
tuttavia, vorrei che l'animazione si interrompesse a metà, proprio come l'applicazione Mappe ... Qualche idea su come ottenere questo risultato?Animazione arricciatura pagina parziale
risposta
L'arricciatura parziale di Maps è un'API privata. Puoi trovare i dettagli su come utilizzarlo nel libro di Erica Sadun The iPhone Developer's Cookbook, ma ti verrà rifiutato dall'App Store per utilizzarlo.
Non sicuro se questo funzionerà, ma il parametro su +setAnimationRepeatCount:
può essere una frazione.
Se faccio così, allora la transizione insieme alla vista svanisce ... – rson
In iOS 3.2 e versioni successive, è possibile fornire lo UIViewController
a UIModalTransitionStyle
di UIModalTransitionStylePartialCurl
. Dal UIViewController
reference, vediamo
typedef enum {
UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl,
} UIModalTransitionStyle;
Quindi un caso ad esempio l'uso sarebbe:
UIViewController *viewController;
// …create or retrieve your view controller…
// Note: The modalPresentationStyle must be UIModalPresentationFullScreen,
// and the presenter must also be a full-screen view
viewController.modalPresentationStyle = UIModalPresentationFullScreen;
viewController.modalTransitionStyle = UIModalTransitionStylePartialCurl;
Se si desidera eseguire questa operazione, ma conservare una barra degli strumenti in basso (ad esempio, non un ricciolo a schermo intero), vedere la mia soluzione [qui] (http://stackoverflow.com/a/11406056/1148702) –
ho trovato una soluzione per aggiungere un UIView per UIViewController utilizzando blocco Animazione.
m_Container è un UIView che contiene l'animazione della mia vista (auto). self è un UIView.
ATTENZIONE: È necessario disporre di importazione QuartzCore
Per presentare vista con la pagina di animazione riccio è possibile utilizzare:
-(void)PresentView
{
[UIView animateWithDuration:1.0
animations:^{
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setDuration:0.7];
[animation setTimingFunction:UIViewAnimationCurveEaseInOut];
animation.type = @"pageCurl";
animation.fillMode = kCAFillModeForwards;
animation.endProgress = 0.65;
[animation setRemovedOnCompletion:NO];
[m_container.layer addAnimation:animation forKey:@"pageCurlAnimation"];
[m_container addSubview:self];
;}
];
}
E quando si vuole nascondere questo punto di vista si può usare:
-(void)HideHelpView
{
[UIView animateWithDuration:1.0
animations:^{
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setDuration:0.7];
[animation setTimingFunction:UIViewAnimationCurveEaseInOut];
animation.type = @"pageUnCurl";
animation.fillMode = kCAFillModeForwards;
animation.startProgress = 0.35;
[animation setRemovedOnCompletion:NO];
[m_container.layer addAnimation:animation forKey:@"pageUnCurlAnimation"];
[self removeFromSuperview];
;}
];
}
Spero di averti aiutato.
È questo API privata? Sembra funzionare perfettamente ma non lo vedo nei documenti. – SG1
Questa non è un'API privata, utilizzo solo i metodi di UIView per animare una vista (m_container per me). Hai solo bisogno di copiare il contenuto dei metodi nei tuoi metodi e cambiare m_container con la tua vista ... – TheRonin
Buono a sapersi ... Suppongo che farò solo una transizione di capovolgimento della pagina. – rson
A partire da iOS 3.2, questo non è più vero. – tJener