我有一个应用程序,当我从数据库和构建对象中读取一些信息时,我想要一个图像动画。我已经使用了UIImageView并设置了图像数组,但是如果我开始动画然后进行数据库处理,动画就不会播放。
有没有其他方法可以启动动画,还是让我在动画中进行处理?
由于
答案 0 :(得分:3)
听起来你正在主线程上进行处理,这阻止了你的动画运行。
动画在主线程上运行,所以为了避免阻塞,这个线程处理应该安排在不同的线程上。
您可以使用以下块来实现此目的:
dispatch_queue_t queue;
queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
// Your processing to be performed on this thread.
});
或者在早期的iOS版本上,如下:
[self performSelectorInBackground:@selector(yourProcessing) withObject:nil];
- (void)yourProcessing {
// Your processing to be performed on this thread.
}
我强烈建议您阅读Threading Programming Guide,然后观看有关Block和Grand Central Dispatch(WWDC 2009)的WWDC会议。
答案 1 :(得分:2)
开始动画后,您可以在后台线程上运行数据库处理。这将使两者同时发生。
答案 2 :(得分:2)
听起来你正在尝试在主线程上进行数据库处理,是的,它会阻止你的UI,因此它无法动画(因此用户无法与任何东西进行交互)。看看Concurrency Programming Guide。