uiview CGAffineTransform向后动画

时间:2011-07-05 12:51:35

标签: iphone

我有一个UIView子类,我可以成功使用UIView动画。

UIView也有子视图,我也希望能够UIView制作动画。

然而,似乎每当我创建动画并将其应用于父视图时它都可以正常工作,但如果我将动画应用于子视图,它会向后动画。

例如,如果我将UIView父级(self)缩放2倍(将宽度和高度加倍):

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelegate: self];
[UIView setAnimationDuration:2];
[UIView setAnimationDelay:2];

CGAffineTransform scaleTransform = CGAffineTransformScale( self.transform, 2, 2  );
self.transform = scaleTransform;
[UIView commitAnimations];

然后这很好。

但如果我对孩子做同样的事情:

UIView *myObj = [[self subviews] objectAtIndex:0];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelegate: self];
[UIView setAnimationDuration:2];
[UIView setAnimationDelay:2];

CGAffineTransform scaleTransform = CGAffineTransformScale( myObj.transform, 2, 2  );
myObj.transform = scaleTransform;
[UIView commitAnimations];

它不起作用。视觉上发生的是儿童视图立即缩小,然后延迟缩小到原始大小。

如果我记录转换参数,它对父母和孩子看起来都一样,我尝试设置CGAffineTransformIdentity

任何想法可能是什么问题?

1 个答案:

答案 0 :(得分:0)

我覆盖了layoutSubviews,在那里我根据设备方向分配了视图的大小/位置,这是冲突的。h!