我有一个带有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;
}
答案 0 :(得分:3)
第一次调用cellForItemAtIndexPath
方法时,未设置单元格的边界。因此,shadowPath
未正确计算。确保在单元格的边界发生更改时更新shadowPath。可以使用layoutSubviews
GenreViewCell
方法。
答案 1 :(得分:2)
您是否有理由设置shadowPath属性?由于您希望将阴影设置为图像视图本身的边界,因此您不必这样做。删除该行。
另外,为防止滞后:
cell.genreImageView.layer.shouldRasterize = YES;
cell.genreImageView.layer.rasterizationScale = [[UIScreen mainScreen] scale];