xcode - 自定义 TableViewCell 与高度变化的 subview

标签 xcode uitableview swift xcode6 tableview

我正在使用 TableView 并有一个自定义 TableViewCell,我已向其中添加了 subview 。

问题是我有时需要更改 subview 的高度,因此,表的 contentView 以及行的高度都必须更新。

自定义TableViewCell的 subview 由黄色背景表示。

这些图像显示了我的模拟器中当前发生的情况。

  1. 加载时 enter image description here

  2. 在导致 subview 高度增加的事件之后 enter image description here

处理这样的事情最好的方法是什么?

我应该使用约束吗?如果是这样,我应该使用什么样的约束?每次 subview 的大小发生变化时,我是否也必须重新加载表格 View ?

这是我当前用于自定义 TableViewCell 的代码:

import UIKit

class CustomCell: UITableViewCell {

    var newView: UIView!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)

        self.newView = UIView(frame: self.frame)
        self.newView.backgroundColor = .yellowColor()
        self.addSubview(newView)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        self.newView.frame.size.width = self.frame.size.width // because self.frame.width is different than it was in the init method
   }

    func somethingHappenedThatMySubviewHasToIncreaseInHeight() {
        self.newView.frame.size.height = self.frame.size.height + 40
    }
}

最佳答案

最好的方法是使用自动布局和自动调整单元格大小。在 Storyboard中为自定义单元设置约束。

您不需要重新加载tableView。每个单元格将根据其 subview 占用的垂直空间大小自动调整其高度。

有关更多信息,请参阅smileyborg的详细演练。在他的answer在 UITableView 中使用自动布局来实现动态单元格布局和可变行高

关于xcode - 自定义 TableViewCell 与高度变化的 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309150/

相关文章:

xcode - 如何在不进行任何项目修改的情况下加快xcode的构建?

iphone - 如何使 UITableViewCell 上的滑动删除按钮变小?

ios - 无法根据 ios 中的标签文本更改正确的 UITableViewCell 高度

ios - 使用完整的 PFUser 信息查询 PFObject

ios - 如何处理此设计 - iOS

ios - Xcode 9 上的 XS Max 模拟器?

xcode - ld : -bundle and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together

ios - Xcode10 错误 : can't exec (No such file or directory) for a user defined build setting

html - 将字符串编码为 HTML 字符串 Swift 3

iphone - 当用户滚动表格并突出显示单元格时,取消突出显示行在索引路径上返回最大整数