J'essaye de réimplémenter le défilement infinitif UICollectionView
vu ici . Les choses qui me manquaient:
ViewController.h :
@interface ViewController : UIViewController<UICollectionViewDataSource, UICollectionViewDelegate>
@end
DataCell.h :
@interface DataCell : UICollectionViewCell
@property (nonatomic, strong) UILabel *label;
@end
DataCell.m :
#import "DataCell.h"
@implementation DataCell
-(instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if(self){
self.label = [[UILabel alloc] initWithFrame:self.bounds];
self.autoresizesSubviews = YES;
self.label.autoresizingMask = (UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight);
self.label.textAlignment = NSTextAlignmentCenter;
self.label.adjustsFontSizeToFitWidth = YES;
[self addSubview:self.label];
}
return self;
}
@end
CustomCollectionView.h:
@interface CustomCollectionView : UICollectionView
@end
Pour l'ensemble du projet, j'ai utilisé un storyboard et un UIViewController
normal. Sur ce contrôleur de vue, j'ai ajouté un UICollectionView
dans Interface Builder. J'ai connecté la sortie de la vue de collection à mon contrôleur de vue et j'ai à nouveau configuré la source de données et délégué les méthodes à mon contrôleur de vue. J'ai également défini la classe personnalisée de UICollectionViewCell
et l'identifiant de réutilisation dans Interface Builder.
Donc, tout devrait fonctionner mais je n'ai qu'un écran noir. Qu'est-ce qui me manque? Vous pouvez télécharger l'intégralité du projet ici .
Vous configurez correctement le CollectionView, juste que vous avez oublié la couleur de l'étiquette :)
[self.label setTextColor:[UIColor whiteColor]];
J'espère que ça aide!
J'ai eu le même problème. L'écran noir semble être un indicateur de l'absence de données disponibles avec la vue de collecte à afficher. Essayez de changer la couleur d'arrière-plan de la vue de collection, si cette couleur modifiée doit s'afficher, votre vue de collection fonctionne. Et puis ajoutez une vue d'image à la vue de collection avec une balise (par exemple, donnez une valeur 100 avec la valeur de balise pour la vue d'image) et avec le cellforItemAtIndexPath définissez les images sur la vue d'image. (Vous pouvez le faire avec une cellule personnalisée. Mais pour l'instant, pour obtenir le travail de vue de collection, l'affectation avec la balise pour la vue d'image convient mieux)
UIImageView * ImageView = (UIImageView *)[cell viewWithTag:100];
ImageView.image = [UIImage imageNamed:[images objectAtIndex:indexPath.row]];
il m'est arrivé que la collectionView et la cellule de la vue de la collection aient des arrière-plans transparents
[self.collectionView registerNib:[UINib nibWithNibName:@"ProductCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"ProductCollectionViewCell"];
self.collectionView.backgroundColor = [UIColor clearColor];
Dans Swift,
self.label.textColor = UIColor.whiteColor()