Iphone 如何使用给定@2x的ASIHTTPRequest填充UIImage视图?
我一直在尝试使用ASIHTTPRequest从url加载图像,但我总是得到一个空白的UIImage。我认为这可能与iOS自动选择图像的@2x命名版本有关,或者与vica自动选择图像的@2x命名版本有关Iphone 如何使用给定@2x的ASIHTTPRequest填充UIImage视图?,iphone,ios,uiimageview,uiimage,asihttprequest,Iphone,Ios,Uiimageview,Uiimage,Asihttprequest,我一直在尝试使用ASIHTTPRequest从url加载图像,但我总是得到一个空白的UIImage。我认为这可能与iOS自动选择图像的@2x命名版本有关,或者与vica自动选择图像的@2x命名版本有关 [ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]]; NSString *url_string = [NSString stringWithFormat:@"http://173.246.100.185/%@", [e
[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]];
NSString *url_string = [NSString stringWithFormat:@"http://173.246.100.185/%@", [eventDictionary objectForKey:kEventDescriptionImageURLKey]];
NSURL *url = [NSURL URLWithString:url_string];
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadCache:[ASIDownloadCache sharedCache]];
[request setCachePolicy:ASIAskServerIfModifiedCachePolicy|ASIFallbackToCacheIfLoadFailsCachePolicy];
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
[request setSecondsToCache:86400];
[request setDelegate:self];
[request setCompletionBlock:^{
NSLog(@"Successful Update");
[self makeAssignment];
}];
[request setFailedBlock:^{
NSError *error = [request error];
NSLog(@"%@", [error localizedDescription]);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Update Failed"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}];
[request startAsynchronous];
NSLog(@"%@", url_string);
makeAssignment方法如下所示
NSString *url_string = [NSString stringWithFormat:@"http://173.246.100.185/%@", [eventDictionary objectForKey:kEventDescriptionImageURLKey]];
NSURL *url = [NSURL URLWithString:url_string];
downloadedImage = [[UIImage alloc] initWithContentsOfFile:[[ASIDownloadCache sharedCache] pathToCachedResponseDataForURL:url]];
NSLog(@"%@", downloadedImage);
NSLog(@"%@", [[ASIDownloadCache sharedCache] pathToCachedResponseDataForURL:url]);
我所做的任何事情,包括在服务器上命名images@2x或提供这两个版本,都无法加载它。有什么想法吗?以前有人这样做过吗?当我从包中本地加载它们时,我没有任何问题
谢谢
编辑
这是日志输出
2011-03-19 11:46:11.088 clv[82974:207]成功更新
2011-03-19 11:46:12.822 clv[82974:207]
2011-03-19 11:46:12.844 clv[82974:207]>
2011-03-19 11:46:12.913 clv[82974:207]成功更新
2011-03-19 11:46:12.932 clv[82974:207]
2011-03-19 11:46:12.932 clv[82974:207]/Users/jonathantpage/Library/Application Support/iPhone Simulator/4.3/Applications/A17C0938-D2ED-447C-BD17-94726C5E5A66/Library/Caches/ASIHTTPRequestCache/PermanentStore/FE05295C8CD7687DC7A505C9070B6FC7.png这不会是自动的@2x东西-如果系统找不到附加有“@2x”的图像,它只会使用原始图像并将其放大。如果您想验证这一点,只需使用非视网膜显示模式在模拟器上运行应用程序 如果你在模拟器上运行你的应用程序,你实际上可以使用finder浏览缓存目录,以验证你的图像是否如你所期望的那样存在。在您的用户目录中,您可以转到~/Library/Application Support/iPhone Simulator/[您的SDK版本]/Applications/[您的应用程序]/进入您的应用程序沙盒,并在那里形成应用程序的库/缓存目录 此外,您还要记录缓存路径:它的结果是什么?你确定这是一条有效的路径吗?同样,如果您在模拟器上,您可以通过尝试在终端/其他应用程序中打开路径来快速验证这一点
至少在我看来,代码中没有什么特别错误,所以感觉本地文件路径出现了问题。也许你可以将你得到的NSLogs发布到控制台上。这不是自动的@2x操作-如果系统找不到附加有“@2x”的图像,它只会使用原始图像并将其放大。如果您想验证这一点,只需使用非视网膜显示模式在模拟器上运行应用程序 如果你在模拟器上运行你的应用程序,你实际上可以使用finder浏览缓存目录,以验证你的图像是否如你所期望的那样存在。在您的用户目录中,您可以转到~/Library/Application Support/iPhone Simulator/[您的SDK版本]/Applications/[您的应用程序]/进入您的应用程序沙盒,并在那里形成应用程序的库/缓存目录 此外,您还要记录缓存路径:它的结果是什么?你确定这是一条有效的路径吗?同样,如果您在模拟器上,您可以通过尝试在终端/其他应用程序中打开路径来快速验证这一点
至少在我看来,代码中没有什么特别错误,所以感觉本地文件路径出现了问题。也许你可以把你得到的NSLogs发布到控制台上。这样一切都很好。错误的是,在分配给UIImageView之后,正在执行完成块。通过将其放在makeAssignment方法中,一切都可以工作。之前我只是在那里填充UIImage,然后将其分配给主线程中的UIImageView。因此,一切都很好。错误的是,在分配给UIImageView之后,正在执行完成块。通过将其放在makeAssignment方法中,一切都可以工作。之前我只是在那里填充UIImage,然后将其分配给主线程中的UIImageView。我已经检查了本地文件路径,它在那里,以及正确的视网膜大小的图像。我已经检查了本地文件路径,它在那里,以及正确的视网膜大小的图像。