2011-04-07 71 views
1

我想动画我的视图响应用户操作看起来像pushviewcontroller的动画。也就是说,我希望视图在屏幕左侧滑动以响应用户操作。但是,我不想创建一个新的视图,并使用pushviewcontroller将它推入堆栈。我想重复使用相同的视图并重新加载数据,并且我希望重新加载的视图与新的数据从右侧滑入,并且在pushviewcontroller的动画中。你会如何做到这一点?pushviewcontroller动画没有实际调用pushviewcontroller

感谢您的帮助!

回答

2

在你的viewController执行此操作。这会将整个视图向右移动,然后在2秒后移回。您可能只想移动一个子视图,以便拥有某种背景。

- (void)viewDidAppear:(BOOL)animated 
{ 
    [UIView animateWithDuration:1.2 
        animations:^{ 
         self.view.frame = CGRectMake(320, 0, 320, 480); 
        }]; 

    [self performSelector:@selector(slideBackView) withObject:nil afterDelay:2.0]; 
} 

- (void)slideBackView 
{ 
    [UIView animateWithDuration:1.2 
        animations:^{ 
         self.view.frame = CGRectMake(0, 0, 320, 480); 
        }]; 
} 
+0

谢谢!这几乎是我想要的。我可以将视图从屏幕上滑下来并重新开始。为了模拟pushviewcontroller动画,我将视图向左滑动并再次从右侧滑动。但是,在两张幻灯片之间,背景是白色的,因为它必须等到第一个视图在第二个视图可以滑入之前滑落。有什么方法可以连接两个视图,因此没有显示白色背景,如pushviewcontroller动画? – Paul 2011-04-07 20:38:49

+0

是的,只要做两个视图的动画。不要使用self.view,而应使用动画块中的firstView.frame和secondView.frame。只需添加一些属性并引用这些视图即可。 – 2011-04-07 20:44:36

+0

好的谢谢!正如你所说,我已经能够摆脱两种观点之间的空白。为此,我一直在创建另一个视图,并将其与原始视图一起进行动画处理。我使用addSubview放入第二个视图。但是,这似乎将视图加载到子视图堆栈中。当我尝试使用removeFromSuperview放弃第二个视图时,第二个视图的动画不起作用,因为它在动画之前删除了第二个视图。我该如何照顾这件事?我应该使用addSubview以外的东西吗?我应该在其他地方调用removeFromSuperview吗? – Paul 2011-04-09 22:13:57

相关问题