我有一个包含许多子视图的MainViewController。基本上,它分为两个窗格。窗格看起来像剪贴板。我想点击一个按钮,让其中一个剪贴板上的“纸张”部分卷曲,以显示下面的页面。
这不是完整的Modal 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"];
基本上,我正在尝试以编程方式加载我的新视图,将其滑入当前可见视图后面,然后卷起顶部的视图以显示现在位于下方的视图。我得到一些局部卷曲动画,但卷曲的“页面”不是不透明的,这很奇怪。此外,当我没有将我的视图和标签设置为隐藏时,即使你看到它们卷曲,你仍然会看到它们“在下面”,这也很奇怪。另外,我没有看到我在XIB中放置的UILabel用于新视图。
有什么想法吗?
谢谢!
<小时/> 好的,所以我有一个可行的解决方案,但这并不是我希望做的。我仍然想找出原来问题的解决方案,但这就是我现在正在做的事情:
转换视图的代码是:
- (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];
}];
}
如您所见,当前标签右侧的标签会生成“卷曲”,当前标签左侧的标签会生成“向下卷曲”。这不是我想要的,但它符合我的目的。
有更好的想法吗?
答案 0 :(得分:-3)
您是否考虑将其加载为模态视图?
- (void)yourFrontViewControllerMethod
{
YourBackViewController *bfvc = [[YourBackViewController alloc] init];
[bfvc setModalTransitionStyle:UIMoalTransitionStylePartialCurl];
[self presentViewController:bfvc];
[bvfc release];
}
这将为您提供所需的视图效果,以显示另一个视图。
另外,作为一般经验法则,我们尽量不以这种方式创建动画。尝试使用基于块的方法(例如[UIView AnimateWithDuration:....]);
希望有所帮助:)