你好我想在Table的cell.image中获取facebook用户的个人资料图片。但它减慢了表格视图的滚动。然后我使用了Asynchronous loading of image链接但是我很困惑如何在表格的方法中使用它
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.font = [ UIFont fontWithName:@"Arial" size:10.0];
cell.textLabel.numberOfLines = 0;
cell.textLabel.text = [NSString stringWithFormat:@"%@",[(Facebook *)[dummyArray objectAtIndex:indexPath.row] sender]];
cell.detailTextLabel.text =[NSString stringWithFormat:@"%@",[(Facebook *)[dummyArray objectAtIndex:indexPath.row] post]];
NSString *get_string = [NSString stringWithFormat:@"%@/picture",[(Facebook *)[dummyArray objectAtIndex:indexPath.row]senderId]];
AsynchronousImageView *image = [[AsynchronousImageview alloc]init];
[image loadImagewithUrlString:getString];
FbGraphResponse *fb_graph_response = [fbGraph doGraphGet:get_string withGetVars:nil];
UIImageView *image_view = [[UIImageView alloc] initWithImage:fb_graph_response.imageResponse];
cell.imageView.image = image_view.image;
[image_view release];
return cell;
}
答案 0 :(得分:4)
由于每次调用image
时都设置cellForRowAtIndexPath:
,因此速度变慢。仅在if (cell == nil)
块内添加图像到单元格的imageView。然后你会看到滚动的改进。
答案 1 :(得分:0)
AsynchronousImageView *image = [[AsynchronousImageview alloc]init];
[image loadImagewithUrlString:getString];
FbGraphResponse *fb_graph_response = [fbGraph doGraphGet:get_string withGetVars:nil];
UIImageView *image_view = [[UIImageView alloc] initWithImage:fb_graph_response.imageResponse];
cell.imageView.image = image_view.image;
此代码正在创建所描述的问题.....尝试此approch ...一旦下载任何图像,将其保存在文档目录中的任何临时文件夹中(创建您的图像的名称,以便您可以唯一地识别它们中的每一个)....当你必须配置单元格时,每次调用方法celForRowAtIndexPath
时,只需从临时文件夹中获取图像....不要使用
UIImageView *image_view = [[UIImageView alloc];
由于你没有使用它(你只是使用它的.image
属性),所以这里没有任何意义....如果可能的话,以这种方式收集viewDidLoad
中的所有数据你可以进一步提高绩效
答案 2 :(得分:0)
您确定是异步图像导致问题吗?注释异步图像部分,看看它可能是FbGraphResponse部分的实际原因。
我发现您每次都会为图表响应创建一个图像,这会导致速度变慢。