• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 自定义 UITableViewCell 中 subview 的 Swift 可变数量

[复制链接]
菜鸟教程小白 发表于 2022-10-22 09:02:15 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个显示自定义单元格的 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-推荐答案


您需要使用图像缓存来克服缓慢。您的单元格每次出现在屏幕上时都会重新绘制。如果不对图像使用 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap