У меня есть MainViewController, который имеет много подпредставлений. В основном, это разбито на две части. Панели имеют вид буфера обмена. Я хотел бы нажать кнопку и сделать так, чтобы «бумага» на одном из буферов обмена частично свернулась, чтобы показать страницу внизу.
Это не полная ситуация презентации модального ViewController.
Я работаю со следующим кодом, но результаты прикольные:
FlipView *flipView = [[FlipView alloc] init];
[self setFlipView:flipView];
[flipView setHidden:YES];
[flipView setFrame:[[self WhereAmI] frame]];
[[self view] addSubview:flipView];
[[self view] bringSubviewToFront:[self WhereAmI]];
[flipView setHidden:NO];
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setDuration:1.0];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[animation setType:@"pageCurl"];
[animation setFillMode:kCAFillModeForwards];
[animation setEndProgress:0.9];
[animation setRemovedOnCompletion:NO];
[[self WhereAmI] setHidden:YES];
[[[self WhereAmI] layer] addAnimation:animation forKey:@"pageCurlAnimation"];
По сути, я пытаюсь загрузить свой новый вид программно, сдвинуть его за видимым в данный момент видом, а затем свернуть вид сверху, чтобы показать вид, находящийся внизу. Я получаю частичную анимацию скручивания, но свернутая «страница» не является непрозрачной, что странно. Кроме того, когда я не устанавливаю свой вид и метку скрытыми, даже если вы видите, что они свернулись, вы все равно видите их «снизу», что тоже странно. Кроме того, я не вижу UILabel, который я поместил в XIB для нового представления.
Есть мысли?
Спасибо!
Итак, у меня есть рабочее решение, но это не совсем то, что я надеялся сделать. Я все еще хотел бы найти решение моего первоначального вопроса, но вот что я сейчас делаю:
- Фоновое изображение для моего "базового" вида - это изображение тетради в спиральной форме.
- Фоновое изображение для всех остальных представлений - это скриншот страницы с завитком.
(Под «фоновым изображением» я подразумеваю UIColor, созданный с помощью patternImage.)
Код для переходов:
- (IBAction)NavigationTabSelected:(id)sender
{
// Flipping views is driven by a SegmentedControl
int selected = [[self NavigationTabsSegmentedControl] selectedSegmentIndex];
int current = [[self ViewArray] indexOfObject:[self ActiveFlipView]];
UIView *newFlip = [[self ViewArray] objectAtIndex:selected];
BOOL up = selected > current;
[UIView animateWithDuration:1.0
animations:^{
[UIView setAnimationTransition:(up)?UIViewAnimationTransitionCurlUp:UIViewAnimationTransitionCurlDown forView:[self RightView] cache:YES];
[[self ActiveFlipView] removeFromSuperview];
[[self RightView] addSubview:newFlip];
}
completion:^(BOOL finished){
[self setActiveFlipView:newFlip];
}];
}
Как вы можете видеть, вкладки справа от текущей вкладки генерируют "свернуться", а вкладки слева от текущей вкладки - "свернуться вниз". Это не совсем то, что я хотел, но это служит моей цели.
Есть идеи получше?