Lorsque j'essaie de mettre UICollectionCell
à UICollectionView
dans Interface Builder, je ne peux pas le mettre pour des raisons inconnues. La cellule va dans la barre d’outils sans ajouter à UICollectionView
J'utilise:
Si vous utilisez XIB, créez-en un nouveau avec CellName.xib, ajoutez-lui CollectionViewCell, indiquez le nom de la classe personnalisée UICollectionView. Après cela, utilisez registerNib.
Exemple de code: https://github.com/lequysang/TestCollectionViewWithXIB
Vous ne pouvez pas mettre UICollectionViewCell
directement dans UiCollectionView
si vous utilisez le fichier Xib
. Ce n'est possible qu'en storyboard. Ajoutez une UICollectionViewCell
dans un fichier Xib séparé. Donnez le nom de votre classe. Puis enregistrez soit class soit xib avant que la vue collection apparaisse
[self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:CELL_ID];
Cela se fait généralement dans viewDidLoad
.
Ceci est l'implémentation d'une UICollectionViewCell
personnalisée sans utiliser Xib
@implementation CollectionViewCell
@synthesize imageView = _imageView;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor whiteColor];
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowRadius = 5.0f;
self.layer.shadowOffset = CGSizeMake(2.0f, 2.0f);
self.layer.shadowOpacity = 0.5f;
// Selected background view
UIView *backgroundView = [[UIView alloc]initWithFrame:self.bounds];
backgroundView.layer.borderColor = [[UIColor colorWithRed:0.529 green:0.808 blue:0.922 alpha:1]CGColor];
backgroundView.layer.borderWidth = 10.0f;
self.selectedBackgroundView = backgroundView;
// set content view
CGRect frame = CGRectMake(self.bounds.Origin.x+5, self.bounds.Origin.y+5, self.bounds.size.width-10, self.bounds.size.height-10);
UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
self.imageView = imageView;
[imageView release];
self.imageView.contentMode = UIViewContentModeScaleAspectFill ;
self.imageView.clipsToBounds = YES;
[self.contentView addSubview:self.imageView];
}
return self;
}
D'accord. Il existe en fait une solution de contournement pour cela, si vous vouliez vraiment que la cellule soit dans collectionView dans le fichier xib du constructeur d'interface:
Cela fonctionnera parfaitement.