[英]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.