根据内容自动更改单元格高度 - Swift [英] Automatically change cell height based on content - Swift

查看:98
本文介绍了根据内容自动更改单元格高度 - Swift的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Swift中使用UITableView,有人可以帮我根据标签,图片和描述自动更改单元格的高度吗?

Using a UITableView in Swift, could someone please help me automatically change the height of the cell based on the label, picture, and description please?

所有的信息正确传递,我只需要帮助格式化它。

All of the information passes through correctly, I just need help formatting it.

我尝试使用 cell.frame.size.height ,但那没有效果。我可以在故事板中更改单元格的大小,但如果可能的话,我希望它更具动态。

I tried adjusting it using cell.frame.size.height, but that had no effect. I could change the size of the cell in the storyboard, but I would like it more dynamic if possible.

提前感谢您!

我的细胞如下所示:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell

        // Creator
        let creator = self.photos[indexPath.row].creator
        let user = UILabel()
        user.frame = CGRectMake(self.headerView.frame.origin.x, self.headerView.frame.origin.y + self.headerView.frame.height + 3, self.view.frame.width, 12)
        user.text = creator
        cell.addSubview(user)

        // Photo
        let picture = self.photos[indexPath.row].image()
        let imageView = UIImageView(image: picture!)
        imageView.frame = CGRectMake(user.frame.origin.x, user.frame.origin.y + user.frame.height, self.view.frame.width, 400)
        imageView.contentMode = UIViewContentMode.ScaleAspectFit
        cell.addSubview(imageView)

        // Photo description
        let description = UITextView()
        let des = self.photos[indexPath.row].photoDescription
        description.frame = CGRectMake(imageView.frame.origin.x, imageView.frame.origin.y + imageView.frame.height, self.view.frame.width, 65)
        if des != nil {
            description.text = des!
            description.font = UIFont.systemFontOfSize(16)
            description.editable = false
            description.scrollEnabled = false
        }
        cell.addSubview(description)

        cell.frame.size.height = user.frame.size.height + imageView.frame.size.height + description.frame.size.height + 30

        return cell
    }


推荐答案

为了使单元格自动变大,你需要做两件事:

In order to make the cell auto sizeable, you need to do two things:


  1. 使用autolayout来排列单元格内的元素。底部空间和顶部空间限制将根据需要推动单元格大小。

  2. 在<$ c $中设置 tableView.rowHeight = UITableViewAutomaticDimension c> viewDidLoad

  1. Use autolayout to arrange the elements inside of your cell. Bottom space and top space constraints will push the cell size as needed.
  2. Set tableView.rowHeight = UITableViewAutomaticDimension in your viewDidLoad

这篇关于根据内容自动更改单元格高度 - Swift的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆