以编程方式显示一个UIView

3
我想通过动画展示UIView。具体来说,我想显示视图的中心部分,然后慢慢展示其外部边缘(有点像拉开窗帘)。我的第一次尝试是简单地将边界矩形设置为更小,并将其动画化为视图框架的完整大小,但由于改变边界,我也改变了框架,这并没有达到预期效果。
如果我所尝试的事情听起来不可能(至少不是以简单的方式),那么至少我希望有一种方法使主视图的子视图相对于屏幕静止,而不是相对于它们的父视图,因为父视图调整大小(这将产生类似的效果)。
有什么想法吗?
谢谢,
-Matt
2个回答

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

根据调整大小时触发的其他布局,您还可能需要将视图的自动调整掩码设置为完全灵活(弹簧但没有支撑杆)。


这是正确的,谢谢您快速而全面的回复。 - mag725

0
听起来你想改变它的裁剪效果。一个简单(代码上)的方法是将该视图插入到父视图中(并设置自动调整大小以使其居中),然后设置父视图裁剪其子视图,并对父视图的框架进行动画处理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接