在objective-c中,当按下按钮时,我在使用以下文件上传文件时加载处理动画:
[self performSelectorInBackground:@selector(loadAnimation) withObject:self];
这样可以显示loadAnimation图像。
文件上传后如何停止?我试过了:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(loadAnimation) object:nil];
但这并没有阻止动画。
loadAnimation是:
- (void) loadAnimation
{
loadingPng.hidden=NO;
NSArray *imageArray = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"0.png"], [UIImage imageNamed:@"1.png"], [UIImage imageNamed:@"2.png"], [UIImage imageNamed:@"3.png"], [UIImage imageNamed:@"4.png"], [UIImage imageNamed:@"5.png"], nil];
loadingPng = [[UIImageView alloc] initWithFrame:CGRectMake(487, 500, 50, 50)];
[self.view addSubview:loadingPng];
loadingPng.animationImages = imageArray;
loadingPng.animationDuration = 1.5;
[loadingPng startAnimating];
}
答案 0 :(得分:1)
只是为了清楚明白performSelectorInBackground
创建另一个线程,它执行该方法并死掉(如果没有附加到任何runloop)。
如果在执行过程中出现屏幕上的某些内容并且您想隐藏它,只需调用隐藏它所需的任何例程。如果您使用UIActivityIndicatorView
或UIImageView
来电-(void)stopAnimating
(在这种情况下为[loadingPng stopAnimating]
)。
没有必要在后台启动动画,实际上这是不应该做的事情,因为强烈建议只在主线程上进行涉及UI操作的任何事情。
这是一个应该转到后台的加载,动画触发停留在主线程上。