UICollectionView добавление UICollectionCell
когда я пытаюсь поставить UICollectionCell
до UICollectionView
в Interface Builder я не могу поставить его с неизвестными причинами. Ячейка переходит на панель инструментов без добавления в UICollectionView
Я использую:
- iOS SDK 6.0
- XCode 4.5.1
- Я не использую раскадровки
3 ответа:
только UICollectionView внутри раскадровки есть UICollectionViewCell внутри. Если используется XIB, создайте новый XIB с именем ячейки.xib, добавьте в него CollectionViewCell, Укажите имя пользовательского класса UICollectionView. После этого используют регистерниб.
пример кода:https://github.com/lequysang/TestCollectionViewWithXIB
вы не можете поставить
UICollectionViewCell
прямо вUiCollectionView
Если вы используете . Это возможно только в раскадровке. ДобавитьUICollectionViewCell
в отдельный Xib файл. Назовите свой класс. Затем зарегистрируйте класс или xib до появления представления коллекции[self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:CELL_ID];
обычно это делается в
viewDidLoad
.это реализация пользовательского
UICollectionViewCell
С помощью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; }
ОК. На самом деле есть обходной путь для этого, если вы действительно хотели иметь ячейку в collectionView внутри xib-файла из interface builder:
- создать раскадровку.
- создайте UICollectionView и UICollectionViewCell из interface builder.
- отрегулируйте пользовательский интерфейс с ограничениями и т. д., чтобы он выглядел именно так, как вы хотели.
- создать новый xib файл.
- скопируйте все внутри раскадровки на экран новый файл xib.
Он будет работать отлично.
- одна вещь, чтобы иметь в виду, что Шаг #3 очень важен, потому что после #5 вы не должны перетаскивать и перемещать UICollectionView, если вы это сделаете, ячейка волшебным образом исчезнет! Кроме того, он будет просто отлично работать.