在动画制作后,如何将视图恢复到原始状态?

时间:2013-06-18 17:23:00

标签: ios objective-c core-animation

我有一个矩形视图,其中有两个标签(一个静态,一个动态)从xib设置。 当用户触摸视图时,我让它收缩并隐藏标签(使用UIView的{​​{1}})。

有什么方法可以保存视图的上下文,稍后再返回它?

我知道有-animateWithDuration: animations:,但文档只是说:返回图形上下文,我猜这是整个视图。 (什么可怕的文件!)

UIGraphicsGetCurrentContext似乎有可能这是常见的,但这只是CALayers方法,我不确定它是否在其实现中使用UIView

2 个答案:

答案 0 :(得分:2)

不,您无法轻松保存和恢复整个视图和子视图内容。 UIGraphicsGetCurrentContext可用于拍摄UIView的照片,但不能保存子视图位置。

而是为每个子视图保留两组帧,然后通过设置mySubview.frame在它们之间切换。

答案 1 :(得分:1)

所以回答你的一些问题:

首先,UIView的核心是CALayer的包装。您可以通过视图的CALayer属性访问基础layer。如果你正在做很多动画工作,你可能会发现这在某些方面非常有用。在iOS的意义上,一个'图形上下文基本上是存储有关当前绘图状态的信息的地方。

UIView为动画提供的便捷方法(animateWithDuration等)会在动画完成后自动将视图的边框,边界等设置为新的动画值。因此,您希望保留您正在更改的任何值,以便在需要时可以为其设置动画。请注意,此可能不是只是框架 - 如果您正在更改您想要依赖它们的Alpha值,等等。

您可以尝试其他选项,但它们涉及使用稍低级别的Core Animation API。现有的StackOverflow问题有一个非常好的摘要:UIView animations with Autoreverse