逐个加载图像

时间:2011-09-19 08:14:37

标签: iphone

我想逐个加载图片而不是一起加载。在下面的代码中,imagedata是包含url的数组,我需要从中加载图像。这是我的代码,但没有成功。

-(void)loadSingleImage:(int)buttonTag

{

    UIButton *buttonImage =(UIButton *) [self.view viewWithTag:buttonTag];
    NSData *imagesubCategoryData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:[imageData objectAtIndex:buttonTag-30]]];
    [buttonImage setImage:[UIImage imageWithData:imagesubCategoryData] forState:UIControlStateNormal];
}
-(void)loadImageData

{

    for(int i=0;i<[imageData count];i++)
    {
        [self loadSingleImage:i+30];
        sleep(0.1);
    }

}

3 个答案:

答案 0 :(得分:3)

您可以使用Grand Central Dispatch逐个加载图片。

使用以下代码

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

dispatch_async(queue, ^{
    NSURL *url = [NSURL URLWithString: @"http://www.gev.com/wp-content/uploads/2011/05/two_flowers.preview.jpg"];

    dispatch_sync(dispatch_get_main_queue(), ^ {
        [cell.cellImage setImageWithURL: url placeholderImage: [UIImage imageNamed: @"twitter.jpg"]]; 
    });
});

它可能会帮助你

答案 1 :(得分:1)

您可以使用NSTimer ..如果您需要示例代码,请告诉我。

答案 2 :(得分:0)

如果必须延迟,请不要使用sleep(),而是使用runloop:

NSRunLoop* currentRunLoop = [NSRunLoop currentRunLoop];
for(int i=0;i<[imageData count];i++)
{
    [self loadSingleImage:i+30];
    NSDate* dateLimit = [NSDate dateWithTimeIntervalSinceNow:0.1];
    [currentRunLoop runUntilDate:dateLimit];
}

但更好的解决方案是GCD。