你如何在后台线程中放置代码

时间:2013-04-16 01:00:33

标签: ios6 background-process

我正在构建一个下载文件的应用程序,当下载正在运行时,我想要一个简单的图形,像过去那样的动画Gif一样旋转。

所以我有代码来加载这个图像,少量旋转这个图像,然后重新显示它。

我希望在下载处于活动状态时继续旋转。

我从网上看了很多代码,但我觉得我对太多的信息感到困惑。有没有一种简单的方法可以做到这一点。

我假设我必须有一个方法来构建旋转和重新显示,我可以在此后台进程中循环,同时继续下载,然后在下载结束时中断后台任务。

我现在运行的示例代码如下: 下载

        NSString *imagefile = [NSString stringWithFormat:@"https://imoonaws.com/glold/data/%@/mid.png", Path];
    NSURL *url1=[NSURL URLWithString:imagefile];
    NSData *data1 = [NSData dataWithContentsOfURL:url1];
    [data1 writeToFile:fullPath atomically:YES];

和图像旋转

    UIImage *image = [UIImage imageNamed: @"Icon.png"];

UIImage *rotatedImg = [image imageRotatedByDegrees:18];
[_image setImage:rotatedImg];

2 个答案:

答案 0 :(得分:1)

  

我假设我必须建立一个方法

不要假设。下载并执行动画。如果您正确进行下载,则后台 。如果你正确地做动画,它就在它自己的(不同的)线程中。没问题。

你没有说什么不起作用或者是否有什么不起作用,你没有显示任何代码,那还能说些什么呢?你有实际问题吗?

答案 1 :(得分:1)

NSString *imagefile = [NSString stringWithFormat:@"https://imoonaws.com/glold/data/%@/mid.png", Path];
NSURL *url1=[NSURL URLWithString:imagefile];
NSData *data1 = [NSData dataWithContentsOfURL:url1];

好吧,不要那样做!这是同步下载。正如我在书中所解释的那样异步下载(http://www.apeth.com/iOSBook/ch37.html#_http_requests)。

UIImage *image = [UIImage imageNamed: @"Icon.png"];
UIImage *rotatedImg = [image imageRotatedByDegrees:18];
[_image setImage:rotatedImg];

也不要这样做!要旋转图像视图,请不要更改图像,这将要求您在主线程上重复轮询;只是给它一个旋转动画,让我们去吧!动画在我的书中解释:http://www.apeth.com/iOSBook/ch17.html - 我向你展示了如何进行旋转动画以及如何永远重复(以及如何在时机成熟时停止动画)。