我可以使用动画制作视图并仅更新其内容吗? 我有4个视图是相同的,所以不是创建4个xib,而是想更新视图,但给用户一个他已经切换视图的印象。模拟推动导航控制器的更新视图
所以我不是真的想要推一下,我只是想给用户留下这样的印象。 这可能吗?
我可以使用动画制作视图并仅更新其内容吗? 我有4个视图是相同的,所以不是创建4个xib,而是想更新视图,但给用户一个他已经切换视图的印象。模拟推动导航控制器的更新视图
所以我不是真的想要推一下,我只是想给用户留下这样的印象。 这可能吗?
我设置了一个简单的项目,其中一个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);
}];
}]; }
你可以玩的时间,使它看起来更有点“土”,和前面提到的与阿尔法玩。你可以在两个动画块中的任何一个中改变它。
就像一点额外的注意事项一样,确保您更改自身的背景颜色.window与您的动画制作视图的背景颜色相同,否则会在屏幕显示为黑色(窗口的默认背景色)时显示第二秒。将alpha设置为0.3,然后返回1.0也很好。 – jmstone617 2012-02-06 16:24:03
能够绘制一个视图左侧,同时动画从右侧的下一个观点,这将是同一个推(假设未来和当前的看法已经子视图)
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属性,它可能会更好看
这个(imho)的最佳方法是在没有动画的情况下弹出当前视图,然后立即再次推送相同的视图。
myNavigationController = self.navigationController;
[myNavigationController popViewControllerAnimated:NO];
[myNavigationController pushViewController:myViewController animated:YES];
这是我用来给无限数量的观点的影响,而在现实中只能使用/守信在内存中的部分技术。
当想要处理“后退”导航时,您将推送一个没有动画的新导航,然后用动画弹出。
myNavigationController = self.navigationController;
[myNavigationController pushViewController:myViewController animated:NO];
[myNavigationController popViewControllerAnimated:YES];
所以你试过。你是否能够在没有动画的情况下切换视图? – 2012-02-06 15:59:26
仍未尝试在没有动画的情况下切换视图。这不应该是一个问题。我只需要调用我的控制器.text并给出新的内容。但是,如果没有动画,用户对它不是非常敏锐,他改变了观点。 – bruno 2012-02-06 16:05:18