我正在尝试对这个基于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一个设置位置,一个设置边界,它适用于那个视图。
然而,问题是我的视图中有子视图。someView 有一个UIScrollView类型的子视图,我在其中放置了另一个UIImageView类型的子视图。UIScrollView子视图将autoresizingMask设置为UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight。如果我使用基于块的UIView版本,这一切都可以完美运行,但是当我尝试使用CABasicAnimations时,子视图开始出现意外行为(即调整为不正确的宽度)。因此,使用CABasicAnimations时似乎autoresizingMask无法正常工作。我还注意到子视图没有接到电话setFrame:,尽管在更改层位置和边界后,父视图的 frame 属性确实发生了变化。
这就是为什么我想知道使用CABasicAnimation复制的正确代码是什么,即使用 UIView 的animateWithDuration方法时会发生什么。