我有一個自定義UITableViewCell組成的UIImageView和UILabel。單元格爲320x104px,imageView佔據了前面標籤的整個區域。只有8個電池。自定義UITableViewCell與大UIImageView導致滾動滯後
in ViewDidLoad我正在創建所有需要的圖像,並將它們以正確的尺寸緩存在字典中。
當我滾動UITableView時,每次遇到新單元格時都會出現明顯的延遲。這對我來說沒有任何意義,因爲它正在使用的圖像已經被創建和緩存。我所要求的單元格就是它的UIImageView渲染圖像。
我使用其觀點自定義單元格的廈門國際銀行和配置我的UITableView與使用它:
[self.tableView registerNib:[UINib nibWithNibName:@ 「ActsCell」 捆綁:無] forCellReuseIdentifier: myIdentifier];
細胞創建和配置:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString* reuseIdentifier = @"ActsCell";
ActsCell* cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
// Configure the cell...
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
- (void)configureCell:(ActsCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
Act* act = [self.acts objectAtIndex:indexPath.row];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.title.text = act.name;
cell.imageView.image = [self.imageCache objectForKey:act.uid];
}
可能是什麼造成的滯後呢?隨着所有時間密集型工作的完成,嘗試進行異步操作似乎沒有任何好處。
我能想到兩件事情。一種是出隊失敗,因爲你沒有正確設置'reusableIdentifier'。另一個是圖像的大小。即使圖像被加載,CG需要在顯示之前處理圖像數據,這可能涉及昂貴的操作,如縮放,合成等。 – Lvsti
@Lvsti你能詳細說明我沒有正確設置reuseIdentifier嗎? – Undistraction
你是對的,這可能不是這種情況,否則當出列時你不會得到任何細胞...... – Lvsti