2012-02-06 91 views
1

我可以使用动画制作视图并仅更新其内容吗? 我有4个视图是相同的,所以不是创建4个xib,而是想更新视图,但给用户一个他已经切换视图的印象。模拟推动导航控制器的更新视图

所以我不是真的想要推一下,我只是想给用户留下这样的印象。 这可能吗?

+0

所以你试过。你是否能够在没有动画的情况下切换视图? – 2012-02-06 15:59:26

+0

仍未尝试在没有动画的情况下切换视图。这不应该是一个问题。我只需要调用我的控制器.text并给出新的内容。但是,如果没有动画,用户对它不是非常敏锐,他改变了观点。 – bruno 2012-02-06 16:05:18

回答

1

我设置了一个简单的项目,其中一个VC和按钮位于中间以触发动画。这里是绑在按钮的代码:

- (IBAction)pushNewView:(id)sender { 
[UIView animateWithDuration:0.5 animations:^{ 
    // this moves the view off screen to the left 
    self.view.frame = CGRectMake(-320, 0, 320, 480); 
} completion:^(BOOL finished) { 
    // this pops the view over to the right side of the screen 
    self.view.frame = CGRectMake(320, 0, 320, 480); 
    [UIView animateWithDuration:0.5 animations:^{ 
     // and this slides it in from the right 
     self.view.frame = CGRectMake(0, 0, 320, 480); 
    }]; 
}]; } 

你可以玩的时间,使它看起来更有点“土”,和前面提到的与阿尔法玩。你可以在两个动画块中的任何一个中改变它。

+0

就像一点额外的注意事项一样,确保您更改自身的背景颜色.window与您的动画制作视图的背景颜色相同,否则会在屏幕显示为黑色(窗口的默认背景色)时显示第二秒。将alpha设置为0.3,然后返回1.0也很好。 – jmstone617 2012-02-06 16:24:03

0

能够绘制一个视图左侧,同时动画从右侧的下一个观点,这将是同一个推(假设未来和当前的看法已经子视图)

UIView *nextView.frame = CGRectOffset(self.view.frame, self.view.frame.size.width, 0.0f); 

[UIView animateWithDuration:0.3f animations:^{ 
    currentView.frame = CGRectOffset(currentView.frame, -self.view.frame.size.width, 0.0f); 
    nextView.frame = CGRectOffset(nextView.frame, -self.view.frame.size.width, 0.0f); 
}]; 

如果您尝试更改视图的alpha属性,它可能会更好看

+0

currentView将等于self.view和nextView将是我用UIViewController创建的一个?在那个例子中, – bruno 2012-02-06 16:12:16

+0

它们都是self.view的子视图。如果您使用视图控制器创建视图,然后进行假推,它似乎毫无意义,您应该只推一个视图控制器的新实例 – wattson12 2012-02-06 16:15:22

4

这个(imho)的最佳方法是在没有动画的情况下弹出当前视图,然后立即再次推送相同的视图。

myNavigationController = self.navigationController; 
[myNavigationController popViewControllerAnimated:NO]; 
[myNavigationController pushViewController:myViewController animated:YES]; 

这是我用来给无限数量的观点的影响,而在现实中只能使用/守信在内存中的部分技术。

当想要处理“后退”导航时,您将推送一个没有动画的新导航,然后用动画弹出。

myNavigationController = self.navigationController; 
[myNavigationController pushViewController:myViewController animated:NO]; 
[myNavigationController popViewControllerAnimated:YES]; 
+0

你可以分享你如何访问myNavigationController和myNavController吗? – jwhat 2012-03-04 20:55:39

+0

啊,myNavController和myNavigationController将是同一件事(复制和粘贴错误,现在我将修复它)。 – ader 2012-03-05 09:15:10

相关问题