0
我有一個加載自定義表格視圖單元的表格視圖。在表格視圖單元格中,我有一個圖像視圖,以及其他控件。的問題是,表視圖口吃滾動時,即使正在從高速緩存或文件目錄讀取的圖像(使用未進行任何差別)桌面視圖與滾動圖像時出現斷斷續續的情況
下面是用於顯示錶視圖細胞的代碼:
func tableView(tableView: UITableView,
willDisplayCell cell: UITableViewCell,
forRowAtIndexPath indexPath: NSIndexPath) {
if cell.isKindOfClass(EventsTableViewCell) {
let eventCell = cell as! EventsTableViewCell
let list = self.eventsList
if list.count > 0 {
let event = list.objectAtIndex(indexPath.row) as! Event
//other cell labels configured here
//imageCache is NSCache instance
if let imageData = self.imageCache.objectForKey(event.name) as? NSData {
let image = UIImage(data: imageData)
eventCell.eventImageView.image = image
}
else if event.imageUrl != "" {
eventCell.setImageToCell(event)
}
}
}
}
func tableView(tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "eventCell"
var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier)
if cell == nil {
let nibCollection = NSBundle.mainBundle().loadNibNamed("EventsTableViewCell",
owner: nil,
options: nil)
cell = (nibCollection as NSArray).objectAtIndex(0) as? EventsTableViewCell
}
cell?.selectionStyle = .None
return cell!
}
在EventsTableViewCell
,
func setImageToCell(event: Event) {
//apply placeholder image. This image will be replaced if an image is found for the particular event.
if event.image != nil {
dispatch_async(dispatch_get_main_queue(), {
self.eventImageView.image = event.image
})
}
}
因此,即使沒有任何圖像正在這裏下載,表格視圖仍然不能妥善處理滾動。我不確定我做錯了什麼。圖像的大小是否可以成爲問題?
圖像大小是多少? – skymook
它們的大小各不相同..它們的範圍從大約100 KB到2 MB – StudentX
2MB!是相當大的尺寸,你可能會考慮降低圖像的大小。但是,我認爲你的問題在別的地方。可能會在cellForRowAtIndexPath幫助你設置單元格中的圖像。您還可以嘗試將圖像從緩存中讀取到dispatch_async(dispatch_get_main_queue(),{})中,並查看它是否有效。 –