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