HY,
我的应用程序我希望通过同时更改它的位置和旋转来为UIView设置动画。 问题是有时动画会改变UIView的宽度和高度。
动画代码就是这个:
int shuffleFrameX = (int)self.gameView.frame.size.width - (int)myView.frame.size.width;
int shuffleFrameY = (int)self.gameView.frame.size.height - (int)myView.frame.size.height;
int x = arc4random()%shuffleFrameX;
int y = arc4random()%shuffleFrameY;
CGRect newFrame = CGRectMake(x, y, myView.frame.size.width, myView.frame.size.height);
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
if(isPieceRotationActive)
{
int fact = arc4random()%4;
myView.transform = CGAffineTransformMakeRotation(DegreesToRadians(90*fact));
[myView setPieceRotation:fact];
}
[myView setFrame:newFrame];
[UIView commitAnimations];
使用委托功能重复此动画2到5次。我没有在这里复制它们。
知道我做错了什么吗?
谢谢!
答案 0 :(得分:2)
我认为你应该使用边界而不是框架。当在矩形上进行旋转以保持旋转的矩形时,框架的尺寸将增大,边界将不会,因为边界代表旋转的矩形的内部坐标
答案 1 :(得分:2)
更改/调整您的代码以使用此序列:
这样的事情: