我有一个矩形视图,其中有两个标签(一个静态,一个动态)从xib设置。
当用户触摸视图时,我让它收缩并隐藏标签(使用UIView
的{{1}})。
有什么方法可以保存视图的上下文,稍后再返回它?
我知道有-animateWithDuration: animations:
,但文档只是说:返回图形上下文,我猜这是整个视图。 (什么可怕的文件!)
UIGraphicsGetCurrentContext
似乎有可能这是常见的,但这只是CALayers
方法,我不确定它是否在其实现中使用UIView
。
答案 0 :(得分:2)
不,您无法轻松保存和恢复整个视图和子视图内容。 UIGraphicsGetCurrentContext
可用于拍摄UIView
的照片,但不能保存子视图位置。
而是为每个子视图保留两组帧,然后通过设置mySubview.frame
在它们之间切换。
答案 1 :(得分:1)
所以回答你的一些问题:
首先,UIView
的核心是CALayer
的包装。您可以通过视图的CALayer
属性访问基础layer
。如果你正在做很多动画工作,你可能会发现这在某些方面非常有用。在iOS的意义上,一个'图形上下文基本上是存储有关当前绘图状态的信息的地方。
UIView
为动画提供的便捷方法(animateWithDuration
等)会在动画完成后自动将视图的边框,边界等设置为新的动画值。因此,您希望保留您正在更改的任何值,以便在需要时可以为其设置动画。请注意,此可能不是只是框架 - 如果您正在更改您想要依赖它们的Alpha值,等等。
您可以尝试其他选项,但它们涉及使用稍低级别的Core Animation API。现有的StackOverflow问题有一个非常好的摘要:UIView animations with Autoreverse