Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何使用给定@2x的ASIHTTPRequest填充UIImage视图?_Iphone_Ios_Uiimageview_Uiimage_Asihttprequest - Fatal编程技术网

Iphone 如何使用给定@2x的ASIHTTPRequest填充UIImage视图?

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从url加载图像,但我总是得到一个空白的UIImage。我认为这可能与iOS自动选择图像的@2x命名版本有关,或者与vica自动选择图像的@2x命名版本有关

[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。

我已经检查了本地文件路径,它在那里,以及正确的视网膜大小的图像。我已经检查了本地文件路径,它在那里,以及正确的视网膜大小的图像。