我有一个显示自定义单元格的 UITableView。每个单元格包含一个 ScrollView 、一个 ImageView 和几个文本标签。这一切都已在 Storyboard中设置。我在 cellForRowAtIndexPath 中设置了文本标签和 ImageView 的各种属性.到目前为止,直截了当。
现在,我需要向每个单元格中的 ScrollView 添加可变数量的图像。目前,我更新 ScrollView 的内容大小并调用 cell.contentView.addSubview 将这些图像添加到 cellForRowAtIndexPath .不幸的是,这似乎会导致内存泄漏。
如果我在表格 View 上上下滚动多次,它会变得非常故障和缓慢。我怀疑我添加到单元格的 subview 没有被释放。每次调用 'cellForRowAtIndexPath' 时,我都会尝试删除单元格的所有 subview ,但这似乎不能解决问题。
我应该在哪里向单元格的 ScrollView 添加 subview ,以便在每次重用单元格时释放它们?
这是我的代码的一部分:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("newsFeedCell", forIndexPath: indexPath) as! NewsFeedCell
cell.layoutIfNeeded()
// Get the profile picture dimensions
self.profPicWidthHeight = getProfilePictureDimensions(cell)
// Reset all views in the friends subview
for view in cell.friends.subviews {
view.removeFromSuperview()
}
// Get all info to display in cell
cell.eventTitle.text = self.eventNames[indexPath.section]
cell.time.text = self.eventTimes[indexPath.section]
cell.entityPicture.image = self.eventImages[indexPath.section]
cell.entityName.text = self.eventSponserNames[indexPath.section]
// If this user has joined this event, add his/her image to the array
if (self.eventsUserJoined[indexPath.section]) {
self.eventUserImages[indexPath.section].append(self.meImage)
}
// Set the scroll view content size
cell.friends.contentSize = CGSizeMake(CGFloat(self.eventUserImages[indexPath.section].count + 2) * (self.profPicHorizontalOffset + self.profPicWidthHeight), cell.friends.frame.height)
// Add profile images
var i: CGFloat = 1
for profPic in self.eventUserImages[indexPath.section] {
cell.friends.addSubview(layoutProfilePicture(i, picture: profPic!, squareDimension: self.profPicWidthHeight))
i++
}
非常感谢您能提供的任何帮助!
Best Answer-推荐答案 strong>
您需要使用图像缓存来克服缓慢。您的单元格每次出现在屏幕上时都会重新绘制。如果不对图像使用 inMemory 缓存,则会导致速度缓慢。看看 SDWebImage 并使用它来设置图像。
https://github.com/rs/SDWebImage
示例使用:
让 url = NSURL(string: "http://my-images-url.com ")
self.imageView.sd_setImageWithURL(url,已完成: block )
关于ios - 自定义 UITableViewCell 中 subview 的 Swift 可变数量,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/31843277/
|