gpt4 book ai didi

ios - 以编程方式将 UILabel 添加到 CollectionViewCells

转载 作者:可可西里 更新时间:2023-11-01 00:56:34 25 4
gpt4 key购买 nike

我的应用程序需要多个 CollectionViews 因此我决定以编程方式创建它们。我向每个单元格添加了一个 UILabel,但是 UILabel 仅添加到随机 cell,而其他单元格不显示任何标签。

如果我上下滚动,textLabels 在某些单元格中随机消失并重新出现在其他单元格中。这是问题的直观描述

(注意标签在我向下滚动时消失了)

我需要所有单元格来显示文本标签。

这是我使用的代码:

View Controller

  override func viewDidLoad() {
super.viewDidLoad()


let frame = CGRect(x: 0 , y: 50 , width: 375 , height: 300)
let layout = UICollectionViewFlowLayout()
let collectionView = UICollectionView(frame: frame , collectionViewLayout: layout)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.register(CustomCell.self, forCellWithReuseIdentifier: NSStringFromClass(CustomCell.self))
view.addSubview(collectionView)
}



func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 250 }

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

let cell = collectionView.dequeueReusableCell( withReuseIdentifier: NSStringFromClass(CustomCell.self), for: indexPath) as! CustomCell
cell.nameLabel.text = "XYZ"
return cell

}

II 自定义单元格

class CustomCell: UICollectionViewCell {

var nameLabel: UILabel!

override init(frame : CGRect) {
super.init(frame : frame)

nameLabel = UILabel(frame: self.frame)
nameLabel.textAlignment = .left
nameLabel.textColor = .black
contentView.addSubview(nameLabel)
contentView.backgroundColor = .red
}

required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

}

是什么导致了这种异常行为?我是否错误地设置了 collectionView

最佳答案

你在这一行 nameLabel = UILabel(frame: self.frame) 中做错了,实际上你给出的位置与 Collection View 单元格的位置(x 和 y 坐标)相同,这是错误的。你需要给 nameLabel 的位置 x=0 和 y=0,然后它就可以正常工作。定义 nameLabel 的框架如下:

var nameLabel:  UILabel = UILabel(frame: CGRect.zero)

override init(frame : CGRect) {
super.init(frame : frame)
nameLabel.frame.size = CGSize(width: self.frame.width, height: self.frame.height)
}

输出如下:

enter image description here

关于ios - 以编程方式将 UILabel 添加到 CollectionViewCells,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46023284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com