ios - UITableView + UICollectionView + UITableView 大小问题

标签 ios swift uitableview uicollectionview uicollectionviewcell

下面附上的图片代表我的要求:
UITableView
在这张图片中,黄色 UITableView将有不同的列表 UITableViewCell项目。在其中之一 UITableViewCell它有 UICollectionView及其列表 UICollectionViewCell UICollectionView 的项目和滚动方向设置为水平
每个UICollectionViewCell将有一个 UITableView (以红色突出显示),它将具有 UITableViewCell 的列表(以玫瑰色突出显示)项目。在这里,UITableViewCell (以玫瑰色突出显示)项目可以折叠/展开。每当单元格折叠/展开时,会自动处理红色表格的内容大小。但是,每当红色表的内容大小增加时,collectionview 的大小就不会增加。
我已经为这些 UI 元素添加了所有相关的约束。但是,当 tableview 单元格扩展时,collectionview 的内容大小或框架不会扩展。
为了更好地理解这里,我将分解 View 的设计方式:

  • 嵌入在 UIViewController 中的黄色 tableview它将有一个简单的 UITableViewCell没有自定义类
  • 以编程方式向单元格发送 UICollectionView将被添加。此 UICollectionView放在一个 xib文件,它已嵌入到 UIView
  • UICollectionViewCell已创建于一个 xib它将有 UITableView里面的元素。
  • 另外,UITableViewCell有自己的xib引用,这是将展开/折叠的单元格

  • 我试过修改 intrinsicContentSize属性修改 UICollectionView属性嵌入其中的高度 UIView每当发生扩展时的元素。请引用 CardView.swift供引用。
    CardView.swift
    我知道设计有点复杂。 但是,我在这里错过了什么?

    最佳答案

    根据您在图像中的要求,我刚刚创建了一个示例项目 here .
    我没有使用单独的 Xib。但是,我能够实现您的要求。
    您可能必须根据您的应用程序业务逻辑更好地处理最里面 tableView 的重新加载。
    这是我实现的:

  • 最顶层的 View Controller 有一个父表 View 。
  • 这个表格 View 单元格由一个子集合 View 组成。
  • 子集合 View 单元格由一个大子表 View 组成。
  • 大子表 View 是与问题中以玫瑰色突出显示的表 View 对应的 View 。
  • 要回答有关集合 View 未扩展的问题:要在点击孙表 View 单元格时扩展子集合 View ,我通过增加包含集合 View 的单元格的行高来重新加载父表 View 。因此,您不必担心调整自动布局中的约束
  • 如果您想在子集合 View 单元格中添加其他内容,您可以向具有低优先级的大子表 View 添加高度约束,并在需要扩展大子表 View 中的内容时对其进行修改。
  • 如果您想达到@Ramy Al Zuhouri 建议的第 6 点,您可能需要调用:collectionView.performBatchUpdates之前 collectionView.reloadData()扩大单元格大小

  • 请参阅下面的视频以更好地理解
    enter image description here

    关于ios - UITableView + UICollectionView + UITableView 大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69531226/

    相关文章:

    ios - 在 iOS 上拍摄照片时出现随机错误

    ios - 在 tableview 中每 5 个单元格后添加一个广告替换内容

    c# - 如何将 UIImageView 添加到 xamarin.forms 中的 UIAlertView?

    ios - performSegueWithIdentifier 未启动 Segue

    ios - 无法使用 Alamofire 通过服务器上传音频文件

    ios - Swift 代码中 UITextfield 为空时如何返回?

    ios - UISearchBar 没有过滤 UITableView

    ios - 当我像在 ios 中的 Flipkart 中一样将表格 View 滚动到底部时,如何在表格 View 中显示事件指示器?

    android - Flutter - Navigator 的 'parent != ' null' is not true' 错误

    ios - 在 SpriteKit 中的 GameScene.swift 之前添加一个屏幕