我正在为我的加载动画寻找一种不确定的动画技术。用户单击登录,当JSON内容正在处理时,微调器旋转然后最终呈现新的视图控制器或登录错误。我发现 Nate 给出了一个很棒的code snippet。
代码由:
给出// an ivar for your class:
BOOL animating;
- (void) spinWithOptions: (UIViewAnimationOptions) options {
// this spin completes 360 degrees every 2 seconds
[UIView animateWithDuration: 0.5f
delay: 0.0f
options: options
animations: ^{
self.imageToMove.transform = CGAffineTransformRotate(imageToMove.transform, M_PI / 2);
}
completion: ^(BOOL finished) {
if (finished) {
if (animating) {
// if flag still set, keep spinning with constant speed
[self spinWithOptions: UIViewAnimationOptionCurveLinear];
} else if (options != UIViewAnimationOptionCurveEaseOut) {
// one last spin, with deceleration
[self spinWithOptions: UIViewAnimationOptionCurveEaseOut];
}
}
}];
}
- (void) startSpin {
if (!animating) {
animating = YES;
[self spinWithOptions: UIViewAnimationOptionCurveEaseIn];
}
}
- (void) stopSpin {
// set the flag to stop spinning after one last 90 degree increment
animating = NO;
}
当用户点击“登录”时,会调用startSpin
方法,并发送JSON内容。在我的JSON post方法中,我有这个:
if(success == 1) {
//Present the new view controller
}
else {
[self performSelectorOnMainThread:@selector(stopSpin) withObject:nil waitUntilDone:NO];
[self performSelectorOnMainThread:@selector(hideAnimation) withObject:nil waitUntilDone:NO];
}
这个动画方法适用于我稍后在我的应用中使用的上传页面。但是,对于这个应用程序,它只旋转180度然后停止。然后,在无生命图像的时间间隔之后最终加载下一页/错误。有没有人知道为什么会这样?我不认为它与视图控制器部分有任何关系,因为即使登录失败也不会停止旋转(没有显示视图控制器)。我使用以下方法点击按钮调用startSpin
方法:
[self performSelectorOnMainThread:@selector(showAnimation) withObject:nil waitUntilDone:NO];
[self performSelectorOnMainThread:@selector(startSpin) withObject:nil waitUntilDone:NO];
show动画只是一种取消隐藏视图的方法。
任何想法都赞赏。
答案 0 :(得分:0)
基本上你将变换设置为旋转到Pi / 2,180度,然后将第二轮设置为相同的值。将某些内容设置为与之前相同的值将不会为其设置动画。你可以找到一种方法来为旋转变换添加另外180度。