从nib文件加载视图时动画化视图

时间:2011-10-21 19:10:43

标签: iphone objective-c ios cocoa-touch interface-builder

我有一个加载包含视图的nib文件的方法:

[[NSBundle mainBundle] loadNibNamed:@"NewView" owner:self options:nil]; 

我想知道在视图加载时是否可以添加一个简单的过渡。我已经浏览了互联网,但我找不到任何东西。

1 个答案:

答案 0 :(得分:3)

有很多方法可以呈现视图并为其设置动画。

您可以使用loadNibnamed创建创建:

How to load a UIView using a nib file created with Interface Builder

为视图设置动画的一种方法是以模态方式呈现它。这将从底部动画:

[[self navigationController] presentModalViewController:navController animated:YES];

这些帖子显示了使用modalTransitionStyle

更多地控制它的动画效果

How can I change the animation style of a modal UIViewController?

iPhone - presentModalViewController with transition from right

另一种选择是创建一个视图,将其作为子视图添加到当前视图并为框架设置动画。如果您只是加载视图,请考虑使用UINib - 它已添加到iOS 4.0和缓存中。它是双性的。

UINib *nib = [UINib nibWithNibName:@"TestView" bundle:nil];
UIView *myView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0]];

然后,您可以将其添加为subView。

如果要在视图中为子视图设置动画,请参阅本教程:

http://www.raywenderlich.com/2454/how-to-use-uiview-animation-tutorial

具体做法是:

CGRect basketTopFrame = basketTop.frame;
basketTopFrame.origin.y = -basketTopFrame.size.height;

CGRect basketBottomFrame = basketBottom.frame;
basketBottomFrame.origin.y = self.view.bounds.size.height;

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelay:1.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

basketTop.frame = basketTopFrame;
basketBottom.frame = basketBottomFrame;

[UIView commitAnimations];