iphone - 用于推送 UIViewController 的自定义动画

标签 iphone animation uikit uiviewcontroller uinavigationcontroller

我想在插入 View Controller 时显示自定义动画:我想实现类似“展开”动画的效果,这意味着新 View 从给定的矩形展开,比如说 [100,100 220,380] 在动画期间扩展到全屏。

有什么建议从哪里开始,分别有什么文档、教程、链接吗? :)

<小时/>

好吧。我可以使用以下代码制作展开动画:

if ([coming.view superview] == nil)   
    [self.view addSubview:coming.view];
    coming.view.frame = CGRectMake(160,160,0,0);
    [UIView beginAnimations:@"frame" context:nil];
    [UIView setAnimationDuration:4];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [coming viewWillAppear:YES];
    [going viewWillAppear:YES];
    coming.view.frame = CGRectMake(0, 0, 320, 480);
    [going viewDidDisappear:YES];
    [coming viewDidAppear:YES];
    [UIView commitAnimations];

我的 View 已正确显示,但遗憾的是导航栏未更新。有没有办法手动执行此操作?

<小时/>

在示例代码中,调用了一个函数,该函数花费了 0.03 秒来更新 View 的转换。 不幸的是,当推送 UIViewController 时,我无法调整 View 框架的大小......是吗?

最佳答案

我使用以下函数(添加到UINavigationController)来自定义推送动画:

- (void) pushController: (UIViewController*) controller
         withTransition: (UIViewAnimationTransition) transition
{
    [UIView beginAnimations:nil context:NULL];
    [self pushViewController:controller animated:NO];
    [UIView setAnimationDuration:.5];
    [UIView setAnimationBeginsFromCurrentState:YES];        
    [UIView setAnimationTransition:transition forView:self.view cache:YES];
    [UIView commitAnimations];
}

我想你可以调整这段代码来完成你想要的任何动画。

关于iphone - 用于推送 UIViewController 的自定义动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869787/

相关文章:

iphone - 推送通知对开发有效,但对生产无效

ios - 如何将 Theos 项目安装到设备?

jquery - 在窗口调整大小时禁用 CSS 动画

javascript - JavaScript 和 HTML 中的动画

android - 将图像从不透明动画化为半透明(并保持其半透明)

objective-c - iOS启动后台线程

iOS:UIButton 没有增加高度以适应标题标签(没有子类化 UIButton)

iOS 推送通知句柄

iphone - 我的 iPhone 应用程序图标应该采用什么分辨率?

删除 Main.storyboard 后 iOS 应用程序崩溃