gpt4 book ai didi

iphone - 动画期间的布局 subview ?

转载 作者:行者123 更新时间:2023-12-03 18:25:16 28 4
gpt4 key购买 nike

我有一个带有一堆 subview 的UIView,所有 subview 都使用layoutSubviews定位。当 View 调整大小时,相对位置都会改变。我希望在动画调整大小期间进行这些重新计算(使用 +[UIView beginAnimations:] 调用)。这似乎并没有发生。有什么想法吗?

最佳答案

假设:您希望有多个动画步骤(即位置不随帧大小线性变化)。

这对于单个“标准”UIView 动画来说是不可能的。为什么?框架/边界仅设置一次。

Core Animation有三个“层树”:

  • 模型树是您的应用认为事物所在的位置。
  • 演示树大约是屏幕上显示的内容。
  • 渲染树大约是核心动画正在合成的内容。

UIView 是模型层的(有点薄)包装器。在 UIView 动画期间,Core Animation 更新演示/渲染树 - 模型树代表动画的端点。结果是您的代码(在大多数情况下)可以将动画视为瞬时的 - 将 View 从 A 移动到 B 会立即将其移动到 B;更改恰好以动画形式呈现给用户。

您可以直接使用 CALayer/CAAnimation 执行更复杂的操作,但我还没有对此进行过深入研究。

您可以使用 -[UIView setAnimationDidStopSelector:] 将多个动画链接在一起。 (您也可以尝试将多个动画与 setAnimationDelay: 一起使用,但我不确定同一属性上的多个动画会发生什么;您可能会幸运地使用 setAnimationBeginsFromCurrentState:。)

如果您想要真正细粒度的控制,CADisplayLink (OS 3.1+) 是一个在每次屏幕刷新后触发的计时器。后备选项(用于 3.0 支持)是使用 30/60 Hz 左右的 NSTimer。

关于iphone - 动画期间的布局 subview ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3693539/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com