0

我有一个项目在 xcode 12.5.1 和 15.2 之前的 ios 中运行良好 - 它具有 UITableView 和包含嵌入式视图的单元格。我在加载 UITableViewController 时默认设置“未扩展”单元格的高度,然后通过点击行来扩展它们。

当我迁移到 Xcode 13.2.1 并且应用程序在 ios 15.2 设备上运行时,它有一个单元格高度错误 -

当 UITableViewController 加载和加载包含嵌入视图的单元格时,它的高度总是设置为嵌入视图的高度。

也许有人面临这个错误并有任何解决方案?

代码:

这就是我添加单元格的方式 -

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = cells[indexPath.section]![indexPath.row]
        cell.layer.zPosition = CGFloat(indexPath.row)
        cell.configure(with: models[indexPath.section]![indexPath.row])

        if indexPath.section == 0
        
        {
        switch indexPath.row {
        case 0:
            cell.addEmbeddedView(Section.init())
        default:
            break
        }
}

这就是我在点击单元格之前“修复”单元格大小不扩大的方式:

extension UITableView {
    func fixCellBounds() {
        DispatchQueue.main.async { [weak self] in
            for cell in self?.visibleCells ?? [] {
                cell.layer.masksToBounds = false
                cell.contentView.layer.masksToBounds = false
            }
        }
    }

以及点击它时如何扩展单元格:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        guard let cell = tableView.cellForRow(at: indexPath) as? MyTableViewCell else { return }
        tableView.beginUpdates()
        cell.expanded.toggle()
        tableView.fixCellBounds()
        tableView.endUpdates()
    }


var expanded: Bool = false {
        didSet {
            let duration = CATransaction.animationDuration()
            UIView.animate(withDuration: duration) {
                self.arrow.transform = self.expanded ? CGAffineTransform(rotationAngle: .pi / 2) :  .identity
                
                self.height.isActive = !self.expanded
                self.foldView.alpha = self.expanded ? 1 : 0
                self.container.layoutIfNeeded()
            }
            
        }
    }
4

0 回答 0