在我的应用程序中,我从url下载图像并在uitableview单元格的uiimageview中显示它。
这里我遇到问题是我正在使用Lazyloading
但是在移动设备中它崩溃了,因为缓存内存已满。所以我没有得到任何解决方案来解决这个问题。
如果我以异步方式下载,每当我滚动tableview时,它都会在UItableView中为每个单元格下载,因此需要很长时间才能下载,因为我从服务器获取的图像非常大而且分辨率是非常高,所以需要更多的时间。
请帮助我,我正在尝试,但我没有得到任何解决方案。我是iphone开发的新手。请一些人提出任何建议。我在懒惰加载中使用SdWebImage所以我没有得到任何解决我的问题的方法
感谢和安培;问候 Sravya
答案 0 :(得分:0)
您必须自己管理您的兑现。 如果您不想做很多事情,请使用AFnetworking Library
使用UIImageView类别:UIImageView Category
[imageViewObject setImageWithURL:YOUR_URL_FORIMAGE_HERE];
我希望这会对你有所帮助并且轻松。
答案 1 :(得分:0)
在将图像缓存/在图像视图上显示之前,您必须调整图像大小。 无论您使用哪种图像格式,当图像在视图中显示时,它都会转换为位图,图像越大,内存占用量就越大。检查代码here以获取一些UIImage调整大小类别,这些类别可以帮助您实现这一目标。
答案 2 :(得分:0)
使用此链接:
https://github.com/nicklockwood/AsyncImageView
下载代码:
AsyncImageView.h
和AsyncImageView.m
以下是示例代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [imageURLs count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
#define IMAGE_VIEW_TAG 99
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
//create new cell
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
//add AsyncImageView to cell
AsyncImageView *imageView = [[AsyncImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 44.0f, 44.0f)];
imageView.contentMode = UIViewContentModeScaleAspectFill;
imageView.clipsToBounds = YES;
imageView.tag = IMAGE_VIEW_TAG;
[cell addSubview:imageView];
[imageView release];
//common settings
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
cell.indentationWidth = 44.0f;
cell.indentationLevel = 1;
}
//get image view
AsyncImageView *imageView = (AsyncImageView *)[cell viewWithTag:IMAGE_VIEW_TAG];
//cancel loading previous image for cell
[[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:imageView];
//load the image
imageView.imageURL = [imageURLs objectAtIndex:indexPath.row];
//display image path
cell.textLabel.text = [[[imageURLs objectAtIndex:indexPath.row] path] lastPathComponent];
return cell;
}
如果你在AsyncImageView的拖放类中遇到任何错误,请点击你的prject-> Build Phases->编译源
在AsyncImageView.m中写入-fno-objc-arc
试试吧。希望能帮到你