objective-c - 以编程方式显示 UIView

标签 objective-c ios animation uiview bounds

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

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

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

有什么想法吗?

谢谢,

-马特

最佳答案

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

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

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

关于objective-c - 以编程方式显示 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7069599/

相关文章:

ios - 单击按钮时如何删除按钮?

ios - 如何在 AIR for iOS 应用程序中明确设置可用语言?

Javascript - 以编程方式对形状进行动画处理,其方式与 After Effects 中摆动路径的工作方式相同

objective-c - Xcode 无法识别通过类别添加的方法

objective-c - IOS - 如何在 UIApplication 之外创建模式用户/密码?

ios - 我如何分发混合的 Objective-C 和 Swift 代码以在 iOS 模拟器上运行?

javascript - CSS 过渡和 JS 同时切换

objective-c - 排序时忽略标点符号(Objective-C)

ios - 根据单独的数组对字典数组进行排序?

iphone - 用动画翻页(UIWebView)