如何在不使用 pushviewcontroller 的情况下制作“pushviewcontroller”动画?

Posted

技术标签:

【中文标题】如何在不使用 pushviewcontroller 的情况下制作“pushviewcontroller”动画?【英文标题】:How to do "pushviewcontroller" animation WITHOUT using pushviewcontroller? 【发布时间】:2011-07-11 13:35:29 【问题描述】:

我想做类似 NavigationController pushviewcontroller 的动画。 但我没有 NavigationController,我不想制作它。

所以我想问是否可以在 UIViewController 中做动画?谢谢!


哦忘了说,我想在点击按钮后切换视图。 现在使用 presentModalViewController,但我不喜欢它的动画..

【问题讨论】:

【参考方案1】:

您可以为子视图的 origin 属性设置动画,使其在添加到主视图后沿 x 轴减小。

编辑:

使用这样的东西:

// retrieve the screen bounds
CGRect sBounds = [[UIScreen mainScreen] bounds];
// the origin point is just on the right of the screen
CGRect newFrame = CGRectMake(sBounds.size.width,
                             0.0,
                             sBounds.size.width,
                             sBounds.size.height);
// set your view frame
[mySecondView setFrame:newFrame];
// add it to the main view
[mainView addSubview:mySecondView];
// then animate your view
[UIView animateWithDuration:0.5     // set the interval you want
                 animations:^
                     mySecondView.frame.origin = sBounds.origin;
                 
];

【讨论】:

你的意思是让我的第二个视图动画到第一个视图?代码上怎么做? ***.com/questions/5577077/… 所以我必须先添加子视图(我的第二个视图)然后使用 [UIView animateWithDuration:1.2 动画:^ SecondView.view.frame = CGRectMake(320, 0, 320, 480 ); ];对吗? 是的,你是对的,以防万一你不想使用导航控制器提供的设施。要理解的是你修改了一个视图属性,使用UIView的动画设施 谢谢,我稍后试试。 btw [[UIScreen mainScreen] bounds];这是什么意思? 很好,关于延迟,了解NSTimer 及其类方法之一:-(NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats;【参考方案2】:

我会使用导航控制器并隐藏导航栏,但如果您不想这样做,您可以使用 [UIView beginAnimantion: @"myAnimation" withContext: nil]; 在视图之间切换并更改框架或原点。

【讨论】:

以上是关于如何在不使用 pushviewcontroller 的情况下制作“pushviewcontroller”动画?的主要内容,如果未能解决你的问题,请参考以下文章

Monotouch:如何使用 NavigationController.PushViewController 更改视图更改的默认动画

如何解雇PushViewController?

如何在uitableviewcell swift上使用pushviewcontroller [重复]

pushViewController 后,如何禁用 backBarButtonItem?

如何使用 PushViewController 方法从 UIViewClass 导航到 UIViewController 类

如何使用 pushViewController 方法防止计时器重置?