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/1406037/

相关文章:

ios - UIButton 的 attributeTitle 的动态类型

jquery - 我的动画卷轴滞后,为什么

ios - SwiftUI:将动画附加到过渡

ios - 2 个同步的 UILongPressGestureRecognizer

iphone - 如何在 iPhone 应用程序中保持 Web 服务器的登录状态?

ios - 按下 SFSafariViewController 时出现黑色标签栏

ios - 什么是 Objective C Nib 文件?

iphone - 更改 iOS 状态栏

iphone - 可重用 UIViewController 中的通用导航栏

iphone - NSArray compontentsSeperatedByString 返回无法识别的选择器