以编程方式揭示UIView

时间:2011-08-15 19:21:00

标签: objective-c ios animation uiview bounds

我试图透露(通过动画)UIView。具体来说,我想要显示视图的中心部分,然后慢慢显示它的外边缘(有点像拉回窗帘)。

我的第一次尝试是简单地将边界rect设置为较小并将其设置为视图框架的完整大小,但是这没有达到预期效果,因为通过更改边界我也在更改框架。 / p>

如果我想要做的事情听起来不可能(至少不是以简单的方式),至少我希望能够有一些方法使主视图的子视图相对于屏幕静止,而不是父视图,因为父母调整大小(这会产生类似的效果)。

有什么想法吗?

谢谢,

-Matt

2 个答案:

答案 0 :(得分:6)

绝对有可能。你需要做的是

  • 对于您正在制作动画的视图,setAutoresizesSubviews:NOsetClipsToBounds:YES
  • 将视图的边界(不是框架)设置为一个尺寸为零的矩形,并且原点位于您想要视图在完全显示时占据的矩形的中心点(在视图中)自己的坐标系)。换句话说,startBounds.origin.x应该等于endBounds.size.width的一半,对y也是如此。
  • 通过设置center(在父视图的坐标系中)来定位视图。
  • 在动画块中,将视图的边界更改为零原点和完整大小。
  • 在动画的完成版块中,您可能希望再次setAutoresizesSubviews:YES

您可能还需要将视图的自动调整遮罩设置为完全灵活(弹簧但没有支柱),具体取决于调整时触发的其他布局。

答案 1 :(得分:0)

听起来你想改变它的剪辑。一种廉价(代码方式)的方法是将视图插入父视图(将自动调整设置为居中),设置父剪辑以剪切其子视图,然后为父视图框设置动画。