Ich habe eine SammlungView mit nur 1 Abschnitt in meiner App, die Daten von API herunterladen. Ich habe eine Seitennummerierung und versuche, eine Ladefußzeile in meine CollectionView einzufügen. Die Überschrift erscheint normal. Ich habe in dieser Fußzeile ein UIActivityIndicatorView und ein UILabel. Wenn die erste an einer Grenze ausgelöst wird, sind die 2 Elemente in der Zelle vorhanden, aber wenn die zweite Grenze ausgelöst wird, ist die UIActivityIndicatorView nicht vorhanden.UIActivityIndicatorView verschwindet in CollectionView Fußzeile
Haben Sie eine Idee dafür.
Der Code der Zelle (BaseCell ist nur eine Klasse zu vermeiden, dass die init tippen und init jedes Mal erforderlich):
class loadingCell: BaseCell {
override func setupViews() {
super.setupViews()
backgroundColor = .yellow
let activity = UIActivityIndicatorView()
activity.backgroundColor = .red
activity.startAnimating()
activity.frame = CGRect(x: 10, y: 20, width: 20, height: 20)
let label = UILabel()
label.text = "hello"
label.frame = CGRect(x: 100, y: 20, width: 40, height: 20)
label.backgroundColor = .green
addSubview(activity)
addSubview(label)
}
}
Die Sammlung Delegatmethoden:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
return CGSize(width: SCREENW, height: 50)
}
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if kind == UICollectionElementKindSectionFooter {
let loadingFooterView = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionFooter, withReuseIdentifier: loadingCell, for: indexPath)
return loadingFooterView
}
return UICollectionReusableView()
}
Die Zelle ist gut Eingetragen.
Was passiert, wenn der erste Grenzwert ausgelöst wird:
Und mit dem zweiten:
UIActivityIndicatorView hat eine Eigenschaft namens 'hidesWhenStopped'. Wegen der Löschung der Header verwendet es den vorherigen Status, wenn Sie es nicht richtig konfiguriert haben. Sie können die prepareForReuse-Methode überschreiben, mit der Sie die Animation starten. –
Dank @MaksymMusiienko, ich habe meine Post-Basis auf Ihren Kommentar antworten. Kannst du bestätigen, dass es das war, was du meintest? –