UICollectionView添加UICollectionCell

时间:2013-03-03 10:59:58

标签: ios uicollectionview uicollectionviewcell

当我尝试将UICollectionCell放入Interface Builder中的UICollectionView时,我无法将其置于原因之中。单元格将转到工具栏而不添加到UICollectionView

我正在使用:

  • iOS SDK 6.0
  • XCode 4.5.1
  • 我不使用Storyboard

3 个答案:

答案 0 :(得分:140)

只有StoryBoard里面的UICollectionView里面有UICollectionViewCell。 如果使用XIB,使用CellName.xib创建一个新的XIB,向其添加CollectionViewCell,指定UICollectionView自定义类的名称。之后使用registerNib。

示例代码:https://github.com/lequysang/TestCollectionViewWithXIB

答案 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中有单元格:

  1. 创建故事板。
  2. 从界面构建器创建UICollectionView和UICollectionViewCell。
  3. 使用约束等调整UI,使其看起来完全符合您的要求。
  4. 创建一个新的xib文件。
  5. 将故事板内的所有内容复制到新的xib文件中。
  6. 它会完美运作。

    • 要注意的是,第3步非常重要,因为在#5之后你不应该在UICollectionView上拖动和移动,如果你这样做,那么单元格将神奇地消失!除此之外,它将完美地运作。