我在使用UITableViewCells
上的某些子視圖時遇到性能問題。在我繼續滾動之後,它最終開始變得非常緩慢。將UIViews添加到cell時出現UITableView性能問題.contentView
我正在做的第一步是爲每個細胞創建一個共同的UIView
,基本上這是創建一個白色細胞,對細胞帶有影子的圓角效果。這種表現似乎是正常的,所以我不認爲它是罪魁禍首。
這裏是我使用這樣做代碼:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *NewsCellIdentifer = @"NewsCellIdentifier";
NewsItem *item = [self.newsArray objectAtIndex:indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NewsCellIdentifer];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NewsCellIdentifer];
cell.contentView.backgroundColor = [UIColor clearColor];
UIView *whiteRoundedCornerView = [[UIView alloc] initWithFrame:CGRectMake(10,10,300,100)];
whiteRoundedCornerView.backgroundColor = [UIColor whiteColor];
whiteRoundedCornerView.layer.masksToBounds = NO;
whiteRoundedCornerView.layer.cornerRadius = 3.0;
whiteRoundedCornerView.layer.shadowOffset = CGSizeMake(-1, 1);
whiteRoundedCornerView.layer.shadowOpacity = 0.5;
[cell.contentView addSubview:whiteRoundedCornerView];
[cell.contentView sendSubviewToBack:whiteRoundedCornerView];
cell.layer.shouldRasterize = YES;
cell.layer.rasterizationScale = [UIScreen mainScreen].scale;
cell.layer.opaque = YES;
cell.opaque = YES;
}
[cell.contentView addSubview:[self NewsItemThumbnailView:item]];
return cell;
}
這裏是返回圖形和文字的縮略圖視圖的方法:
- (UIView *) NewsItemThumbnailView:(NewsItem *)item
{
UIView *thumbNailMainView = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 50, 70)];
UIImageView *thumbNail = [[UIImageView alloc] initWithImage:[UIImage imageNamed:item.ThumbNailFileName]];
thumbNail.frame = CGRectMake(10,10, 45, 45);
UILabel *date = [[UILabel alloc] init];
date.frame = CGRectMake(10, 53, 45, 12);
date.text = item.ShortDateString;
date.textAlignment = NSTextAlignmentCenter;
date.textColor = [BVColors WebDarkGrey];
CGFloat fontSize = 10.0;
date.font = [BVFont Museo:&fontSize];
date.opaque = YES;
thumbNail.opaque = YES;
thumbNailMainView.opaque = YES;
[thumbNailMainView addSubview:thumbNail];
[thumbNailMainView addSubview:date];
return thumbNailMainView;
}
的性能問題似乎是當我將縮略圖視圖添加到單元格時發生的,因爲當我將該線條註釋掉時,我似乎沒有它。縮略圖信息是動態的,並隨每個單元格而變化。如果我不應該降低性能,我應該如何做到這一點,我將不勝感激。
通過每次調用此代碼時添加一個子視圖,您正在增加UITableViewCell中的子視圖集合。 dequeing函數創建一個新的表格視圖單元格或抓取現有的單元格。一旦它開始抓取現有的單元格,就會在現有的UIImageView上添加一個UIImageView。其結果是你將成倍地增加需要爲每個單元渲染的UIImageViews。這會大大降低您的應用程序的速度。我喜歡下面的jszumski答案。 – Rob 2013-05-03 20:09:57