UICollectionView voegt UICollectionCell toe

Als ik UICollectionCellin UiCollectionViewin 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 UICollectionViewCellniet rechtstreeks in de UiCollectionViewplaatsen als u het bestand Xibgebruikt. Het is alleen mogelijk in storyboard. Voeg een UICollectionViewCelltoe 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 UICollectionViewCellzonder 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:

  1. Maak een storyboard.
  2. Maak de UICollectionView en de UICollectionViewCell vanuit de interfacebuilder.
  3. Pas de gebruikersinterface aan met beperkingen enz. zodat deze er precies zo uitziet als u wilde.
  4. Maak een nieuw xib-bestand.
  5. 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.

Other episodes