【问题标题】:Collectionview inside tableview causing issue with 2 columnstableview 中的 Collectionview 导致 2 列出现问题
【发布时间】:2019-08-22 05:26:19
【问题描述】:

我在 tableview 单元格中有垂直集合视图。集合视图也包含更多的加载功能。对于集合视图的自我调整大小,我将 tableview 单元格设为自动维度。 我也给收藏视图提供了高度常数。第一次正确加载,但是一旦我转到最后一个单元格,并且在重新加载后加载更多,它会在收集视图后创建大量空间。谁能让我知道我在这里做错了什么。或者是否有任何其他方法可以使 tableview 内的 collection-view 自行调整大小,从而增加 tableview 单元格的高度

**

  • TableviewCell 类

**

justForYouCollectionView.dataSource = self
justForYouCollectionView.delegate = self
justForYouCollectionView.isScrollEnabled = false
self.collectionHeight.constant = self.justForYouCollectionView.collectionViewLayout.collectionViewContentSize.height
justForYouCollectionView.reloadData()

override func systemLayoutSizeFitting(_ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize {
    self.layoutIfNeeded()
    let contentSize = self.justForYouCollectionView.collectionViewLayout.collectionViewContentSize
    return CGSize(width: contentSize.width, height: contentSize.height + 20)
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    if indexPath.row == self.justForYouArray.count - 1 && self.isLoadMore {
        updateNextSet()
    }
}

**

  • CollectionViewCell 类

**

override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
    let autoLayoutAttributes = super.preferredLayoutAttributesFitting(layoutAttributes)
    
    // Specify you want _full width_
    let targetSize = CGSize(width: layoutAttributes.frame.width, height: 0)
    
    // Calculate the size (height) using Auto Layout
    let autoLayoutSize = contentView.systemLayoutSizeFitting(targetSize, withHorizontalFittingPriority: UILayoutPriority.required, verticalFittingPriority: UILayoutPriority.defaultLow)
    let autoLayoutFrame = CGRect(origin: autoLayoutAttributes.frame.origin, size: autoLayoutSize)
    
    // Assign the new size to the layout attributes
    autoLayoutAttributes.frame = autoLayoutFrame
    return autoLayoutAttributes
}

图像中可以看到额外的空间

【问题讨论】:

    标签: swift uitableview uicollectionview autosize


    【解决方案1】:

    我之前所做的只是在情节提要中设置 tableview 高度约束,然后在 viewController 中删除它的出口,然后在填充数据后获取数组计数并除以 2,然后将其乘以 CollectionViewCell 高度并设置它高度到 UITableView 高度约束这样。

    let count = (array.count / 2) * cellHeight
    tableviewHeightConstraint.constant = CGFloat(count)
    

    这会解决你的问题。

    【讨论】:

      【解决方案2】:

      试试

      let a = (yourArray.count /2 ) * heightCell
      tblViewHeightConstraint.constant = CGFloat(a)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        • 2015-09-07
        • 2012-11-01
        • 2011-05-22
        • 1970-01-01
        • 1970-01-01
        • 2016-05-07
        相关资源
        最近更新 更多