我有一个只有6个自定义单元格的UITable。每个CustomCell都有一个水平滚动视图,其中包含自定义视图。每个CustomView上都有一个ImageView和Text。
所以把它们放在一起可能看起来像这样
UITable - > CustomCell --->水平ScrollView - > CustomView - > ImageView和文本
以下是Cell in UITable的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MySecondIdentifier = @"MySecondIdentifier";
UITableViewCell *cell2 = [tableView dequeueReusableCellWithIdentifier:MySecondIdentifier];
if(cell2 == nil){
cell2 = [(CustomCell* )[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MySecondIdentifier target:self row:indexPath.row parent:self];
}
[cell2 setSelectionStyle:UITableViewCellSelectionStyleNone];
[cell2 setValueToCellViewItem:tempTitleString setOfImage:dictCatData];
return cell2;
}
其中DictCatData =数据节点的NSMutableArray 和tempTitleString =单元格的标题字符串(将其用于其他目的)
以下是我设置CustomCell值的方法
- (void) setValueToCellViewItem:(NSString *)pTitle setOfImage:(NSMutableArray *)catData{
[the_pScrolView setContentSize:CGSizeMake([catData count] * 107 , 107)];
int counter = 0;
for(NSDictionary *tempDict in catData){
NSString *url = [[NSString alloc]init];
url = [tempDict objectForKey:@"main_img_url"];
url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
UIImageView *mSdWebImage = [[UIImageView alloc] initWithFrame:CGRectMake(counter * 107, 0, 107, 107)];
[mSdWebImage setImageWithURL:[NSURL URLWithString:url] placeholderImage:nil];
[mSdWebImage setBackgroundColor:[UIColor grayColor]];
[the_pScrolView addSubview:mSdWebImage];
///Setting the title properties
UILabel *the_pLable = [[UILabel alloc] initWithFrame:CGRectMake((counter * 107) + 15, 85, 97, 22)];
the_pLable.textColor = [UIColor whiteColor];
the_pLable.font = [UIFont fontWithName:@"Helvetica" size:10.0];
the_pLable.numberOfLines = 1;
the_pLable.backgroundColor = [UIColor clearColor];
the_pLable.text = [tempDict objectForKey:@"title"];
[the_pScrolView addSubview:the_pLable];
counter++;
}
我正在使用SDWebImage进行异步下载和缓存,因为我认为这是网上最好的。
ScrollView可以包含0到30多个图像的图像
当我在iPhone上打开此页面时,我想这些图像正在被正确缓存下载,因为我能够毫无困难地看到它们
我的问题是
当我尝试向上和向下滚动表格时,滚动不顺畅。那么如何在不影响背景图像下载和缓存的情况下使其更加平滑
当我多次上下滚动表格时,我会重新绘制自定义单元格,我猜想没有图像的CustomCells(即scrollView中没有自定义视图)会显示来自/ top下方其他自定义单元格的图像。
有时应用程序崩溃,我想这是内存管理问题。
答案 0 :(得分:0)
下载图片有多大?我有类似的问题(没有额外的水平滚动),我能够通过使用图像的实际缩略图而不是实际图像(在TableView中)来修复它。
您可能想尝试在单独的对象中下载,缓存和创建图像的缩略图,然后让TableViewCell加载图像的缩略图而不是实际图像。
这加快了我的滚动速度。
答案 1 :(得分:0)
要修复显示错误图像的重复使用的单元格,只需在调用代码显示新图像之前删除cellForRowAtIndexPath中的图像。这样,如果图像被延迟,至少旧的图像已被删除或隐藏。