【问题标题】:Programmatically reveal a UIView以编程方式显示 UIView
【发布时间】:2011-10-27 12:42:43
【问题描述】:

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

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

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

有什么想法吗?

谢谢,

-马特

【问题讨论】:

    标签: objective-c ios animation uiview bounds


    【解决方案1】:

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

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

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

    【讨论】:

    • 这是正确的,感谢您迅速而彻底的回应。
    【解决方案2】:

    听起来您想更改其剪辑。一种廉价(代码方面)的方法是将视图插入父视图(将自动调整大小设置为居中),将父视图设置为剪辑其子视图,然后为父视图设置动画。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-27
      • 2018-06-04
      • 2017-03-17
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多