【发布时间】:2012-02-21 19:47:28
【问题描述】:
我正在尝试在 2 个子视图之间制作动画。目前我尝试了不同的选择,每种都有自己的副作用。
应用程序是一个小游戏,具有技能子视图、库存子视图和状态子视图。我想在技能和库存视图之间制作动画,同时将状态子视图留在主视图的底部。下面我列出了我的各种尝试以及它们的副作用。
-
来自`animateWithDuration的动画
[UIView animateWithDuration:0.3 delay:0.3 options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationCurveEaseIn animations:^{ skillView.hidden = NO; inventoryView.hidden = YES; }completion:NULL];- 似乎没有发生任何转换。视图立即弹出。
-
来自
transitionFromView的动画[UIView transitionFromView:inventoryView toView:skillView duration:0.5 options:UIViewAnimationOptionTransitionFlipFromRight completion:^(BOOL finished){ inventoryView.hidden = YES; }];- 转换已完美完成,但状态视图会与其他视图一起转换。几乎就好像主视图正在为所有内容设置动画一样。
视图被加载到隐藏在背景中的主视图中,它们过去只是弹出到主窗口中。但是,我想在视图之间制作动画以获得更好的应用程序流程。我见过人们删除并添加到主视图,但我希望将子视图设置为可见/不可见应该具有相同的效果。
非常感谢任何建议。
【问题讨论】:
-
您是否尝试将
UIViewAnimationOptionShowHideTransitionViews选项与transitionFromView:...方法一起使用? (例如,添加两个视图但隐藏一个 - 然后使用该选项调用transitionFromView:...) -
我必须在动画块中添加两个视图吗?如果是这样,那么如果我必须切换回来,它将如何工作?我可以调用类似的设置还是必须删除麻烦的视图并将它们重新添加?
-
该选项 (
UIViewAnimationOptionShowHideTransitionViews) 改变了transitionFromView:...的工作方式。通常,该方法实际上修改了fromView的父视图层次结构(删除fromView并添加toView)。要使用我引用的选项,只需在调用方法之前确保两个视图都在视图层次结构中 - 并确保它们位于您提到的状态子视图之上。要走相反的方向,只需翻转参数... toView 变为 fromView ,反之亦然。 -
在翻转子视图时,看起来好像整个窗口都在翻转。
-
是否可以将两个视图都放在一个容器视图中?例如一个只包含你想要动画的两个视图的 UIView?
标签: ios uiview core-animation