我是新的iOS开发人员。我想在2个视图控制器之间创建过渡动画
我该怎么办?
这是我的代码:
int newScreenDegrees = _screenDegrees - 90;
[UIView transitionWithView:self.containerView
duration:0.65f
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
for(int i = 0; i < [self.screens count]; i++)
{
UIViewController *_screen = [self.screens objectAtIndex:i];
int curDeg = newScreenDegrees + i * SPACE_PER_SCREEN;
float curRad = convertDegreesToRadians(curDeg);
float newX = COORDINATES_CENTER_OF_CIRCLE_X + (CIRCLE_RADIUS * cos(curRad)) - (_screen.view.frame.size.width / 2) - 280;
float newY = COORDINATES_CENTER_OF_CIRCLE_Y + (CIRCLE_RADIUS * sin(curRad)) - (_screen.view.frame.size.height / 2);
// transform view
_screen.view.transform = transformMakeRotateTranslate(convertDegreesToRadians(curDeg + 90), newX, newY);
}
}
completion:^(BOOL finished){
_screenDegrees = newScreenDegrees;
// TODO: init content of current view and clear other views
}];
_screenDegrees = newScreenDegrees;
问题是:视图沿着一条直线而不是圆圈移动。
由于
答案 0 :(得分:1)
您需要有多个循环并单独移动视图。打破你移动的圆圈到足够小的部分,看起来就像是以圆形方式移动视图。
for(int i = 0; i < [self.screens count]; i++)
{
UIViewController *_screen = [self.screens objectAtIndex:i];
int newScreenDegrees = i*90;
int numSegs=30; //break into little chunks
int segSize=3;//3 degrees
for (int m=1;m<=numSegs;m++)
{
[UIView transitionWithView:self.containerView
duration:0.65f
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
int curDeg = newScreenDegrees+m*segSize;
float curRad = convertDegreesToRadians(curDeg);
float newX = COORDINATES_CENTER_OF_CIRCLE_X + (CIRCLE_RADIUS * cos(curRad)) - (_screen.view.frame.size.width / 2) - 280;
float newY = COORDINATES_CENTER_OF_CIRCLE_Y + (CIRCLE_RADIUS * sin(curRad)) - (_screen.view.frame.size.height / 2);
_screen.view.transform = transformMakeRotateTranslate(convertDegreesToRadians(curDeg), newX, newY);
}
completion:^(BOOL finished){
_screenDegrees = newScreenDegrees;
// TODO: init content of current view and clear other views
}];
}
}