这是我正在使用的代码。请记住,这在模拟器中工作得很好。但是,当我在 iPad 设备上测试时运行相同的代码时,它不会加载图像。为什么会这样?
SDWebImageManager *manager = [SDWebImageManager sharedManager];
NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.net/folder/Photos/thumbnails/IMG_1780.JPG"];
UIImage *cachedImage = [manager imageWithURL:url];
if (cachedImage)
{
// Use the cached image immediatly
}
else
{
// Start an async download
[manager downloadWithURL:url delegate:self];
}
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(80+196, 5, 192, 192)];
[button setImage:cachedImage forState:UIControlStateNormal];
[button addTarget:self action:@selector(imageSelected:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:button];
return cell;
我将不胜感激任何帮助!谢谢!
编辑:修改后的代码,仍然可以在 Sim 中使用,但不能在设备上使用。
- (void)webImageManager:(SDWebImageManager *)imageManager didFinishWithImage:(UIImage *)image
{
// Do something with the downloaded image
//testImage = image;
testButton = [[UIButton alloc] initWithFrame:CGRectMake(80+196, 5, 192, 192)];
[testButton setImage:image forState:UIControlStateNormal];
[testButton addTarget:self action:@selector(imageSelected:) forControlEvents:UIControlEventTouchUpInside];
}
SDWebImageManager *manager = [SDWebImageManager sharedManager];
NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.net/album/Photos/thumbnails/IMG_1780.JPG"];
UIImage *cachedImage = [manager imageWithURL:url];
[self webImageManager:manager didFinishWithImage:cachedImage];
if (cachedImage)
{
// Use the cached image immediatly
//[self webImageManager:manager didFinishWithImage:cachedImage];
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(80+196, 5, 192, 192)];
[button setImage:cachedImage forState:UIControlStateNormal];
[button addTarget:self action:@selector(imageSelected:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:testButton];
}
else
{
// Start an async download
[manager downloadWithURL:url delegate:self];
}
最佳答案
从未使用过 SDWebImageManager,但只是快速浏览了一下,看起来你做的一切都是正确的!另一方面,它不起作用,所以......
我曾经遇到过类似的问题,经过大量的头发撕裂后,我最终发现设备和模拟器上使用的文件系统是不同的——在你的 iPad 上,我相信它是区分大小写的,但在模拟器上不一样。仔细检查文件名的大小写,它可能会有所不同。
编辑-另外,我假设您正在尝试使用缓存的图像(这就是它立即出现的原因),但是如果您正在下载一个,那么我希望您的按钮初始化代码为时过早。
另一个编辑 - 代表!
你知道使用 SDWebImageManager 的委托(delegate)吗?它可能有一个在图像下载时调用的方法——你需要在你设置按钮的类中实现 SDWebImageManager 委托(delegate)协议(protocol)等——会有一个类似于 -(void)imageDidFinishDownloading:(UIImage *)myImage 您必须包含它,这就是您需要将图像放入按钮的地方。
关于objective-c - UIImage 没有显示在 iPad 设备上,但它显示在 iPad 模拟器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10204930/