用动画UIViewAnimationTransitionCurlUp切换视图

时间:2011-06-01 03:28:34

标签: iphone cocoa-touch ipad

我正在开发一款iPad应用,它在背景主视图前面有一个小弹出视图。

弹出视图显示一张照片及其相关注释等。主视图是一堆缩略图

我想实现一些操作,比如向左/向右滑动,用一个带有动画的新弹出视图替换弹出视图。

// popView is the existing pop up view to be replaced
MyPopupViewController *newPopView = [[MyPopupViewController alloc] initWithData:...];
[UIView animateWithDuration:0.4 
        delay:0 
        options:UIViewAnimationOptionCurveEaseInOut 
        animations: ^{
                   [self.view addSubView: newPopView.view];
                   [popView removeFromSuperView];
                   [UIView setAnimationTransition: UIViewAnimationTransitionCurlUp 
                                          forView:popView cache:YES]; 
        } completion:^(BOOL finished) { popView = newPopView } 
];
[newPopView release];

嗯,这不起作用。我无法删除动画块中的旧视图,否则动画将不会触发。我无法在完成块中删除它,因为在动画期间,旧图像仍然可以在其自身下方显示。

我花了很长时间玩序列,但却无法让它发挥作用。请帮忙。

提前致谢。 利奥

2 个答案:

答案 0 :(得分:1)

我终于通过设置隐藏在动画块中的旧视图来修复此问题。动画将在动画期间显示新视图。

答案 1 :(得分:0)

我是这样做的:它在风景中很好地适应从下到上的卷发

[UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionTransitionCurlUp animations:^()
     {
         [UIView setAnimationTransition: UIViewAnimationTransitionCurlUp
                                forView:self.welcomScreen cache:YES];
         [self.welcomScreen setHidden:YES];
     }completion:^(BOOL finished)
     {
         [self.welcomScreen removeFromSuperview];
     }];