У меня есть рабочий переход с использованием UIViewAnimationTransitionCurlUp
, однако мне хотелось бы, чтобы анимация остановилась на полпути, как приложение Maps ... Любые мысли о том, как этого достичь?Частичная анимация завитка страницы
ответ
Частичный скручивание карт - частный API. Вы можете найти подробную информацию о том, как использовать его в книге Эрика Садун The iPhone Developer's Cookbook, но вы получите отказ от использования в App Store.
Не уверен, что это сработает, но параметр +setAnimationRepeatCount:
может быть долей.
Если я это сделаю, тогда переход вместе с видом исчезнет ... – rson
В iOS 3.2 и более поздних версиях вы можете указать UIViewController
a UIModalTransitionStyle
из UIModalTransitionStylePartialCurl
. Из UIViewController
reference мы видим
typedef enum {
UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl,
} UIModalTransitionStyle;
Так пример случай использования будет:
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;
Если вы хотите сделать это, но сохраните нижнюю панель инструментов (например, не полный скручивание), см. Мое решение [здесь] (http://stackoverflow.com/a/11406056/1148702) –
Я нашел решение, чтобы добавить UIView к UIViewController с помощью анимации блока.
m_Container - это UIView, который содержит анимацию моего представления (self). Я - UIView.
ВНИМАНИЕ: Вы должны иметь импортировать QuartzCore
Чтобы представить вид с страницы завиток анимации вы можете использовать:
-(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];
;}
];
}
И когда вы хотите скрыть эту точку зрения вы можете использовать:
-(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];
;}
];
}
Надеюсь, я помог вам.
Это частный API? Кажется, что он работает отлично, но я не вижу его в документах. – SG1
Это не частный API, я просто использую методы UIView для анимации представления (m_container для меня). Вам просто нужно скопировать содержимое методов в свои собственные методы и изменить m_container по вашему представлению ... – TheRonin
Полезно знать ... Угадайте, я просто сделаю переход с переводом страницы. – rson
Начиная с iOS 3.2, это уже не так. – tJener