当前位置: 首页 > 知识库问答 >
问题:

集合视图首选布局属性拟合函数

陆昂然
2023-03-14

我的集合视图具有覆盖功能:

    // Sets a the width as the screen width and has a dynamic height that changes depending on how much is inside the cell.
override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
    let targetSize = CGSize(width: layoutAttributes.frame.width, height: 40)
    layoutAttributes.frame.size = contentView.systemLayoutSizeFitting(targetSize, withHorizontalFittingPriority: .required, verticalFittingPriority: .fittingSizeLevel)
    print("Layout has been changed.")
    return layoutAttributes
}

此功能使单元格高度根据单元格内内容的高度而动态变化,同时保持宽度为电话屏幕的静态宽度。这个函数完全按照我想要的方式工作。

我遇到的问题是这个函数只在视图加载时被调用,我希望它在我调用collectionView.reloadData()时也能运行。所以当我调用reloadData()时,单元格会关闭其估计的ItemSize,而不是上面函数中的大小首选布局属性

有人知道我在调用collectionView.reloadData()时如何允许此函数运行吗?

共有1个答案

赵经国
2023-03-14

这对我有用:

extension UICollectionView{
func reloadData2(_ completion: @escaping () -> Void) {
        UIView.animate(withDuration: 0, animations: {
            self.reloadData()
        }, completion: { _ in
            completion()
        })
    }

}

 类似资料:
  • 问题内容: 我有这样的实体: 还有一个: 使用Criteria API,我想通过过滤的Picturs获得唯一的AlbumD。我尝试这样的事情: 在这里,我得到了带有所有关联图片的相册。它们根本没有被过滤。当我尝试执行由记录器打印的查询时,只有给定eventId的图片数量只有四行,但是在“相册”中,我获取了所有图片。 我也尝试了其他ResultTransformers,但最终得到了很多结果(4),但

  • 在新的Laravel资源类中,您可以根据自己喜欢的任何内容删除属性。 如果您想返回许多项目,您可以使用该功能 但这不允许您在一个位置添加元数据。输入一个集合,太好了,这是一个很好的格式,能够添加元数据的许多项目。但是,您不能做的是筛选集合,您必须像使用资源一样隐藏属性。我能看到的唯一办法就是 我是不是错过了什么?对于资源收集来说,这似乎是一个被忽视的巨大能力

  • 假设我有以下映射目标。 如何从其他属性的Iterable映射到其他属性? 我可以这样做吗?

  • 我有这个布局。 但问题是,ExpandableListView总是以屏幕为中心,尽管父布局中有重力。我想要的是让它从ListView结束的地方开始。知道是什么原因吗?我应该使用滚动视图而不是线性布局吗? 我希望可扩展的listview出现在listview下方。

  • 我取一个imageView,然后取一个CollectionView。我很困惑如何设计单元格,哪些元素在单元格中拖放

  • 我在代码中使用了合成属性。但想知道它如何以及何时初始化Android中的每个视图。 我们只提供导入和访问每个视图的ID。何时为视图对象分配内存?