以编程方式揭示UIView

mag*_*725 3 animation objective-c uiview bounds ios

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

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

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

有任何想法吗?

谢谢,

-Matt

dwi*_*man 6

这绝对是可能的.你需要做的是

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

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