当我尝试将UICollectionCell
放入Interface Builder中的UICollectionView
时,我无法将其置于原因之中。单元格将转到工具栏而不添加到UICollectionView
我正在使用:
答案 0 :(得分:140)
只有StoryBoard里面的UICollectionView里面有UICollectionViewCell。 如果使用XIB,使用CellName.xib创建一个新的XIB,向其添加CollectionViewCell,指定UICollectionView自定义类的名称。之后使用registerNib。
答案 1 :(得分:18)
如果您使用UICollectionViewCell
文件,则无法将UiCollectionView
直接放入Xib
。它只能在故事板中使用。将UICollectionViewCell
添加到单独的Xib文件中。提供你的班级名称。然后在出现集合视图之前注册class或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;
}
答案 2 :(得分:0)
好。实际上有一个解决方法,如果你真的想在接口构建器的xib文件中的collectionView中有单元格:
它会完美运作。