1

我遇到了奇怪的问题:我将 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 中的集合视图单元格不起作用。

4

1 回答 1

0

UICollectionViewCell如果是UICollectionViewInterface Builder的子级,看起来这根本行不通。

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

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

于 2013-10-18T13:43:44.220 回答