第一次显示单元格时,UIImageView阴影未被绘制

时间:2013-05-14 20:33:50

标签: iphone ios objective-c uicollectionview

我有一个带有customCell的UICollectionView,它有一个UIImageView,我正在添加阴影。但是,在单元格外部"外部"之前不会绘制阴影。可见的集合视图并返回(UICollection)视图。

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

static NSString *cellIdentifier = @"genreCell";

GenreViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

cell.genreImageView.layer.shadowRadius = 1.5;
cell.genreImageView.layer.shadowOffset = CGSizeMake(-1, -1);
cell.genreImageView.layer.shadowOpacity = 0.5;
cell.genreImageView.layer.shadowColor = [UIColor blackColor].CGColor;

cell.genreImageView.layer.shadowPath = [UIBezierPath bezierPathWithRect:cell.genreImageView.bounds].CGPath;

return cell;

}

2 个答案:

答案 0 :(得分:3)

第一次调用cellForItemAtIndexPath方法时,未设置单元格的边界。因此,shadowPath未正确计算。确保在单元格的边界发生更改时更新shadowPath。可以使用layoutSubviews GenreViewCell方法。

答案 1 :(得分:2)

您是否有理由设置shadowPath属性?由于您希望将阴影设置为图像视图本身的边界,因此您不必这样做。删除该行。

另外,为防止滞后:

cell.genreImageView.layer.shouldRasterize = YES;
cell.genreImageView.layer.rasterizationScale = [[UIScreen mainScreen] scale];