UICollectionViewCell不绘制子视图

时间:2013-10-17 16:14:54

标签: ios uicollectionviewcell

我遇到了一个奇怪的问题:我已经将UICollectionViewCell与UIImageView一起子类化了。这个单元格不会绘制(集合视图看起来很清晰),但它会触及。此外,子UIImageView在Interface Builder中看起来可见。如果我覆盖单元格的'drawRect:'方法,它会绘制我的自定义绘图代码。

UIImageView无法绘制的原因是什么?我在iOS 6和7上测试它。

以下代码:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    MyCollectionViewCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
    NSAssert (cell != nil, @"MyCollectionViewCell init failed"); // all right here
    cell.iconImageView.image = [UIImage imageNamed:@"SomeImage"]; // this line doesn't matter
    return cell;
}

...
@implementation LookCollectionViewCell
-(void) drawRect:(CGRect)rect
{
    [super drawRect: rect];
    [[UIColor colorWithRed: 1 green: 0 blue: 0 alpha:1] setFill];
    UIRectFill(CGRectInset(rect, 10, 10)); // draws red rect on black background
}
@end

更新

如果我通过'initWithFrame:'在代码中初始化集合视图单元格并手动添加'UIImageView',那么一切正常。因此,问题是Interface Builder中的集合视图单元格不起作用。

1 个答案:

答案 0 :(得分:0)

如果UICollectionViewCell在Interface Builder中是UICollectionView的子级,则这看起来不起作用。

从这个答案:https://stackoverflow.com/a/15185028/326017“如果你使用Xib文件,你不能将UICollectionViewCell直接放入UiCollectionView。”

因此,如果我为单元格使用单独的XIB文件并通过[collectionView registerNib:cellNib forCellWithReuseIdentifier:@"MyCell"];进行注册,则一切正常。