2013-06-18 133 views
0

我有一个矩形视图,其中包含两个标签(一个静态,一个动态),从一个xib设置。 当用户触摸视图时,我将它合同并隐藏标签(使用UIView-animateWithDuration: animations:)。如何在动画后将视图恢复到原始状态?

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

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

看来,这是可能的,与CALayers常见,但是这仅仅是一个UIView方法,我不知道这是否在其实现使用CALayers

回答

1

所以要回答你的问题有几个:

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

动画完成后,UIView为动画提供的便利方法(animateWithDuration等)会自动将视图的框架,边界等设置为新的动画值。因此,你需要保持你正在改变的任何值,这样你就可以在需要时动画回复它们。请注意,这个可能不是只是框架 - 如果你正在改变你想要挂在它们上面的alpha值,等等等等。

还有其他的选择,你可以尝试,但他们涉及使用略低级别的Core Animation API。这个现有的StackOverflow问题有一个非常好的总结:UIView animations with Autoreverse

2

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

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

+0

是的,保存和恢复您的视图和任何子视图的帧应该很容易,做你想做的。更深入的CA技巧不应该是必要的。 – cbowns

相关问题