我有这个观点,我使用像
之类的东西做一些旋转变换myView.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
//The view was originally at 0 degrees.
在我的代码的其他方面,我想缩放视图动画,所以我做
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
myViews.transform = CGAffineTransformMakeScale(2.0f, 2.0f);
[UIView commitAnimations];
但是当我这样做时,动画是在视图为0度时执行的,忽略了之前的转换。它只是假设视图尚未处于零度,因此,此动画缩放视图并将其旋转回0度(!!!! ?????)
这是一些错误还是我错过了什么? 感谢。
答案 0 :(得分:3)
在与KennyTM讨论后,我找到了绝对转换的最佳解决方案......
在缩放方法上,我这样做:
// notice that both transformations are absolute
CGAffineTransform rotation = CGAffineTransformMakeRotation(degreesToRadian(viewAngle));
CGAffineTransform zoom = CGAffineTransformMakeScale(zoomFactor, zoomFactor);
myView.transform = CGAffineTransformConcat(rotation, zoom);
旋转视图时存储viewAngle。
答案 1 :(得分:2)
因为.transform
分配并不意味着新分配将与旧分配连接。在新的变换中,您只指定了200%的缩放比例,但没有旋转,因此视图将返回0°。
请改为尝试:
myViews.transform = CGAffineTransformScale(myViews.transform, 2.0f, 2.0f);