Objective c 基于UIView创建UICollectionViewCell
我正在尝试创建一个UICollectionView,其中包含不同的UIView作为其单元格。这是可能的还是我必须让它们成为UICollectionViewCells 您必须返回Objective c 基于UIView创建UICollectionViewCell,objective-c,Objective C,我正在尝试创建一个UICollectionView,其中包含不同的UIView作为其单元格。这是可能的还是我必须让它们成为UICollectionViewCells 您必须返回UICollectionViewCellsUICollectionView不接受UIViews 您可以做的是创建一个通用的UICollectionViewCell,它可以嵌入任何UIView。 原因是集合视图单元具有特定的布局和回收组合 另外,您可以在视图本身的UIView中直接添加child,集合视图单元格有一个cont
UICollectionViewCell
s<代码>UICollectionView不接受UIView
s
您可以做的是创建一个通用的UICollectionViewCell
,它可以嵌入任何UIView
。
原因是集合视图单元具有特定的布局和回收组合
另外,您可以在视图本身的
UIView
中直接添加child,集合视图单元格有一个contentView
,如UITableViewCell
s.我没有objective-c示例,但您应该能够从下面的代码示例中获得概念
下面是一个示例,说明如何创建一个封装UIView且更易于重用的单元格
class ProfileView: UIView {
var imageView: UIImageView!
var name: UILabel!
}
class ProfileCollectionViewCell: UICollectionViewCell {
let profileView = ProfileView()
init() {
super.init()
configureConstraints()
}
func configureConstraints() {
// use a handy extension you've already built
contentView.addSubView(profileView)
profileView.pinToEdges(of: contentView)
}
}
func collectionView(_ collectionView: UICollectionView,
cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let row = self.objects[indexPath.row]
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "someId" for: indexPath) as? ProfileCollectionViewCell
cell?.profileView.imageView.image = row["image"]
cell?.profileView.name.text = row["name"]
return cell
}
注意:您可能需要管理“重置单元格状态”,然后才能将其与以下内容一起重用:
override prepareForReuse() {
super.prepareForReuse()
profileView.imageView.image = nil
profileView.name.text = ""
}
创建包裹每个唯一单元格的单元格view@Scriptable你有一个很好的例子吗?不是手。。。这很容易做到,我会给你一个基本的例子。这样做通常不是一个好主意,因为你失去了排队系统的可重用性和缓存。通过向通用单元格中添加/删除视图,唯一可以重用的是空单元格。当然,视图本身必须得到正确管理,不要在运行中重新创建视图,所以要创建UICollectionViewCell并在子视图中添加真实内容?这感觉像作弊,但我可能是对的:)几乎是的。。。但通过这种方式,它可以在集合视图中重用,并提供更好的性能。我将尝试以下方法:)