我遇到了一个奇怪的问题:我已经将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中的集合视图单元格不起作用。
答案 0 :(得分:0)
如果UICollectionViewCell
在Interface Builder中是UICollectionView
的子级,则这看起来不起作用。
从这个答案:https://stackoverflow.com/a/15185028/326017“如果你使用Xib文件,你不能将UICollectionViewCell直接放入UiCollectionView。”
因此,如果我为单元格使用单独的XIB文件并通过[collectionView registerNib:cellNib forCellWithReuseIdentifier:@"MyCell"];
进行注册,则一切正常。