Als ik UICollectionCell
in UiCollectionView
in Interface Builder probeer te zetten, kan ik het om onbekende redenen niet plaatsen. De cel gaat naar de werkbalk zonder iets toe te voegen aan UiCollectionView
Ik gebruik:
- iOS SDK 6.0
- XCode 4.5.1
- Ik gebruik Storyboard niet
Antwoord 1, autoriteit 100%
Alleen UICollectionView in StoryBoard heeft UICollectionViewCell erin.
Als u XIB gebruikt, maakt u een nieuwe XIB met CellName.xib, voegt u CollectionViewCell eraan toe en geeft u de naam van de aangepaste klasse UICollectionView op. Gebruik daarna registerNib.
Voorbeeldcode: https://github.com/lequysang/TestCollectionViewWithXIB
Antwoord 2, autoriteit 13%
U kunt UICollectionViewCell
niet rechtstreeks in de UiCollectionView
plaatsen als u het bestand Xib
gebruikt. Het is alleen mogelijk in storyboard. Voeg een UICollectionViewCell
toe aan een apart Xib-bestand. Geef je klasnaam. Registreer vervolgens klasse of xib voordat de collectieweergave verschijnt
[self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:CELL_ID];
Normaal gesproken wordt dit gedaan in viewDidLoad
.
Dit is de implementatie van een aangepaste UICollectionViewCell
zonder gebruik van 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;
}
Antwoord 3
Ok. Er is hier eigenlijk een oplossing voor, als je de cel echt in collection wilt hebbenBekijk in het xib-bestand van interfacebuilder:
- Maak een storyboard.
- Maak de UICollectionView en de UICollectionViewCell vanuit de interfacebuilder.
- Pas de gebruikersinterface aan met beperkingen enz. zodat deze er precies zo uitziet als u wilde.
- Maak een nieuw xib-bestand.
- Kopieer alles in het storyboard naar het nieuwe xib-bestand.
Het zal perfect werken.
- Eén ding om in gedachten te houden dat stap #3 erg belangrijk is, want na #5 is het niet de bedoeling dat je door de UICollectionView heen en weer beweegt. Als je dat doet, zal de cel op magische wijze verdwijnen! Verder werkt het gewoon perfect.