【发布时间】:2013-03-23 01:28:27
【问题描述】:
我正在尝试对这个 UIView 基于块的动画代码进行精确的“翻译”:
[UIView animateWithDuration:0.5
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
someView.frame = CGRect(0, 100, 200, 200);
}
completion:nil];
使用 CABasicAnimation 代替。
我完全知道 frame 属性实际上是底层的 position、bounds 和 anchorPoint 的组合,因为它在这里描述:http://developer.apple.com/library/mac/#qa/qa1620/_index.html
...我已经做了一个这样的解决方案,使用两个 CABasicAnimations 一个设置 position,一个用于 bounds,它适用于那个看法。
但问题是我的视图中有子视图。 someView 有一个 UIScrollView 类型的子视图,我在其中放置了另一个 UIImageView 类型的子视图。 UIScrollView 子视图的 autoresizingMask 设置为 UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight。如果我使用 UIView 基于块的版本,这一切都可以完美运行,但是当我尝试使用 CABasicAnimations 时,子视图开始出现意外行为(即调整为不正确的宽度)。因此,在使用 CABasicAnimations 时,似乎 autoresizingMask 无法正常工作。我还注意到子视图没有收到对 setFrame: 的调用,尽管在更改层位置和边界后父视图的 frame 属性确实发生了变化。
这就是为什么我想知道使用 CABasicAnimation 复制的正确代码是什么,当使用 UIView 的 animateWithDuration 方法时会发生什么。
【问题讨论】:
标签: ios objective-c core-animation