pushviewcontroller 动画而不实际调用 pushviewcontroller

Posted

技术标签:

【中文标题】pushviewcontroller 动画而不实际调用 pushviewcontroller【英文标题】:pushviewcontroller animation without actually calling pushviewcontroller 【发布时间】:2011-04-07 06:49:27 【问题描述】:

我想为我的视图设置动画以响应用户操作,使其看起来像 pushviewcontroller 的动画。也就是说,我希望视图向左滑动以响应用户操作。但是,我不想创建一个新视图并使用 pushviewcontroller 将其推送到堆栈中。我想重用相同的视图并重新加载数据,并且我希望重新加载的带有新数据的视图从右侧滑入,它会在 pushviewcontroller 的动画中。你会怎么做?

感谢您的帮助!

【问题讨论】:

【参考方案1】:

在您的 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);
                     ];

【讨论】:

谢谢!这几乎是我想要的。我可以让视图滑出屏幕然后重新打开。为了模拟 pushviewcontroller 动画,我让视图向左滑动并再次从右侧滑入。但是,在两张幻灯片之间,背景是白色的,因为它必须等到第一个视图滑出才能滑入第二个视图。有没有办法连接两个视图,所以没有显示白色背景,如pushviewcontroller 动画? 是的,当然,只需使用两个视图来制作动画。不要在动画块中使用 self.view,而是使用 firstView.frame 和 secondView.frame 之类的东西。只需添加一些属性并引用这些视图。 好的,谢谢!正如你所说,我已经能够摆脱两个视图之间的空白。为此,我一直在创建另一个视图,并结合原始视图对其进行动画处理。我使用 addSubview 放入第二个视图。但是,这似乎将视图加载到子视图堆栈上。当我尝试使用 removeFromSuperview 丢弃第二个视图时,第二个视图的动画不起作用,因为它在设置动画之前删除了第二个视图。我该如何处理?我应该使用 addSubview 以外的东西吗?我应该在其他地方调用 removeFromSuperview 吗? 问题是:你想摆脱子视图吗?如果是,请先进行 snimation,然后在视图上调用 performSelector,只要动画是,就应该延迟删除该视图:处理动画,然后删除其视图。【参考方案2】:

您可以为您的 UIView 设置动画,请参阅下面的 SO 帖子 ..

iPhone UIView Animation Best Practice

这里有更多链接..

http://ameyashetti.wordpress.com/2009/08/17/view-animation-tutorial/

【讨论】:

以上是关于pushviewcontroller 动画而不实际调用 pushviewcontroller的主要内容,如果未能解决你的问题,请参考以下文章

popViewController 和 pushViewController 动画

具有缩放动画的 pushViewController,显示背景

在 UITabController 中的选项卡之间切换时使用“pushViewController”动画

PushViewController 和 UIView 动画无效

Monotouch:如何使用 NavigationController.PushViewController 更改视图更改的默认动画

如何在 leftBarButtonItem 上的 pushViewController 上更改动画方向?