Ich habe jetzt fast einen ganzen Tag damit zu kämpfen und kann keine Lösung finden. Ich versuche, eine UICollectionView
in einem View-Controller zu erstellen, der Zellen nur mit einem einzigen Label in jedem von ihnen hat. Allerdings kann ich das Label nicht als Unteransicht der Zelle hinzufügen, egal was ich mache. Hier ist der Code, den ich in meinem Haupt-View-Controller haben:Wie richte ich ein Label in meiner UICollectionView-Zelle ein?
var collectionView: UICollectionView!
func configureCollectionView()
{
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.itemSize = CGSize(width: 50, height: 20)
let y = interestsUnderline.frame.origin.y + 5
let width = interestsUnderline.frame.width
let frame = CGRect(x: 40, y: y, width: width, height: 30)
collectionView = UICollectionView(frame: frame, collectionViewLayout: layout)
collectionView?.dataSource = self
collectionView?.delegate = self
collectionView?.register(InterestsCell.self, forCellWithReuseIdentifier: "InterestsCell")
collectionView?.showsHorizontalScrollIndicator = false
view.addSubview(collectionView!)
}
Ich nenne configureCollectionView() von viewDidLayoutSubviews. Dies ist der Code, den ich in meiner Sammlungsansichtszelle habe.
class InterestsCell: UICollectionViewCell {
override init(frame: CGRect) {
super.init(frame: frame)
setupViews()
}
let label: UILabel = {
let label = UILabel()
label.text = "Hello"
label.textColor = .white
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
func setupViews() {
contentView.backgroundColor = .red
contentView.addSubview(label)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
Immer wenn ich die Zelle entziehe, bekomme ich die richtige Größe der Zelle und die richtige Farbe. Aber wenn ich in der setupViews-Funktion meiner Zelle Einschränkungen für das Label festlege, wird der View-Controller nicht einmal ganz geöffnet. Wenn ich die Einschränkungen nicht festlege, ist das Label nicht vorhanden. Ich bin mir nicht sicher, was ich zu diesem Zeitpunkt tun soll und ich würde mich über Hilfe freuen. Vielen Dank!
Sie müssen Ihrem Etikett Einschränkungen hinzufügen. Zeigen Sie den Code, wo Sie das versucht haben, und es hat nicht funktioniert. – dan
@dan Hier ist es label.centerXAnchor.constraint (equalTo: contentView.centerXAnchor) .isActive = true label.centerYAnchor.constraint (equalTo: contentView.centerYAnchor) .isActive = true –