簡體   English   中英

iPad上的SDWebImage

[英]SDWebImage on iPad

我正在創建一個圖片庫,單擊圖片可導航到下一個視圖。 我正在使用SDWebImage庫來緩存圖像。 緩存效果非常好,我正在獲取圖片庫。 問題是如果我清除緩存並運行我的應用程序。

圖像是通過委托方法下載的,但是我無法在按鈕中分配已下​​載的圖像(viewdidload中的日期),也不會在第一次進行緩存,並且僅當我第二次運行iPad應用程序時才分發圖像(由於緩存) )。 我希望在清除緩存后下載並顯示圖像。 我怎樣才能做到這一點?

我什至准備提供完整的源代碼。

- (void)viewDidLoad {
    [super viewDidLoad];
    self.synced = [NSMutableArray array];
    self.title=@"boom";
    jsonurl=[NSURL URLWithString:@"http://www.1040communications.net/sheeba/stepheni/iphone/stephenFlickr.json"];
    jsonData=[[NSString alloc]initWithContentsOfURL:jsonurl];
    dict=[jsonData objectFromJSONString];
    items=[dict objectForKey:@"items"];
    story = [[NSMutableArray array]retain];
    media1= [[NSMutableArray array]retain];
    for (NSDictionary *item in items )
    {
        [story addObject:[item objectForKey:@"title"]];
        [media1 addObject:[item objectForKey:@"media"]];
    }
    view1 = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    for(int i = 0; i < media1.count; i++)
    {
        NSString *mel=[media1 objectAtIndex:i];
        NSString *escapedURL = [mel stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
        NSURL *url1=[NSURL URLWithString:escapedURL];
        managaer=[SDWebImageManager sharedManager];

        cacheImage = [managaer imageWithURL:url1];

        //To clear the cache, uncomment these three lines
        /* SDImageCache *imageCache = [SDImageCache sharedImageCache];
                     [imageCache clearDisk];
                     [imageCache clearDisk];*/
        if (cacheImage) {
            //If a cache image is present
        }
        else
        {   //If there is no cache image present, download.
            [managaer downloadWithURL:url1 delegate:self];
        }
        button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame =  CGRectMake(column*260+1, row*280+300, 250, 250);
        [button setImage:cacheImage forState:UIControlStateNormal];
        NSLog(@"cached image:%@",cacheImage);

        [button addTarget:self action:@selector(buttonClicked:)
                forControlEvents:UIControlEventTouchUpInside];
        button.tag = i;

        [view1 addSubview:button];

        if (column == 2) {
            column = 0;
            row++;
        } else {
            column++;
        }
    }

    [view1 setContentSize:CGSizeMake(600, (row+1) *280 + 10)];
    [self.view addSubview:view1];
    [view1 release];
}

-(void)webImageManager:(SDWebImageManager *)imageManager didFinishWithImage:  (UIImage   * )image
{
    //The image gets downloaded over here..
}

在此處輸入圖片說明

您需要在-webImageManager:didFinishWithImage:重新加載視圖。 如果刪除子視圖並使用for(int i = 0; i < media1.count; i++)循環重新加載方法中的所有內容,則您的UI應該更新,而無需重新啟動應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM