2011-08-09 14 views
1

我正在写一个应用程序,其中一个组件是一个清单屏幕。该清单有4或5个逻辑小节,我想显示每个部分作为一个单独的视图,用户之间切换与前进和后退按钮(最终与一个滑动手势事件,但这是一个单独的问题)之间的意见。在具有几个离散子屏幕的UIViewController中使用动画的正确方法是什么?

目前,我有一个UIViewController类来管理清单逻辑,它从xib加载初始视图。厦门国际银行将包含所有的4或5次,和我目前可以相当容易地仅仅通过引用设立在UIViewController中所有的UIView对象,并呼吁

[self setView:viewNumberX]; 

该类中它们之间进行切换。但是,这只是突然切换视图,并没有很好的iOS风格的动画。

我这样做的原因是因为我认为适当的范例是有一个UIViewController管理一个或几个不同的相关视图 - 在这种情况下,我的一个UIViewController管理所有4或5个子视图,因为它们都是部件同一核对清单的核对清单逻辑相同。我也注意到,有一个presentModalViewController:(UIViewController的*)动画:BOOL方法UIViewControllers该让我的动画,我切换视图的选项定义,但是这似乎要求我换我UIViews在4个或5个独立UIViewControllers ,这对我没有意义。个人观点没有自己的逻辑。是否有另一种获得此功能的方法,或者我以错误的方式处理这个问题?

回答

0

如果你想拥有你可以刷卡通过,可以使用的UIScrollView与pagingEnabled同时避免使用手势和动画设置为YES清单。使滚动视图一样宽的屏幕,让它的contentSize财产宽屏幕的屏幕*号,然后将其中x是滚动视图内的每个清单坐标,其像填充+的PageNumber * 320(与PAGENUMBER是一个int,并开始0)。如果你选择了这种方法,如果你需要更多的细节或示例代码,我就在这里。

+0

我一直在寻找到UIScrollViews,并做了一些使用它们一个样机示例(基本上,我学习这个项目的iOS编程),我最终还是没有进一步persue它的原因是因为我发现它真的,真的很难在Interface Builder的UIScrollView中安排子视图。基本上,任何可能已经出现过的初始画面是不可能用鼠标,这有点违背了使用IB开始与目的来操纵。 – Tneuktippa

1

如果您对每个UIView都没有UIViewController,可以使用beginAnimations:context:commitAnimations修复动画位。基本上你使用它们像这样,例如:

[UIView beginAnimations:@"animationName" context:nil]; 
[UIView setAnimationDuration:0.80]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight 
         forView:self.navigationController.view cache:NO]; 

...<change view>... 
[UIView commitAnimations]; 

其实,如果你的目标的iOS 4,您需要使用animateWithDuration:animations:,但概念是相同的。 Here你会发现一个代码片段与后者做翻转。

相关问题