我有一个视图,我可以在其中进行一些绘图。我添加一个形状层作为视图层的子层,然后添加一个图像视图作为视图的子视图,然后弯曲图像视图层的角。这一切都完美无缺。
现在我需要在 collectionviewcell 中使用这个视图,我可以在其中动态设置图像。
如果我在draw rect中执行工作,它会在集合视图滚动时一遍又一遍地在另一个之上绘制它。
我尝试了其他一些事情,比如在单元格上为 uiimage 创建一个属性,将其设置为 imageview 的图像,并在 setter 中为其绘制。
有没有人有关于如何做到这一点的建议?
更新:这是我在视图中做的事情的一个例子
- (void)simplifiedDrawWithImage:(UIImage*)image
{
CAShapeLayer *circleLayer = [CAShapeLayer layer];
CGRect circleRect = self.bounds;
UIBezierPath *circlePath = [UIBezierPath bezierPathWithOvalInRect:circleRect];
circleLayer.path = circlePath.CGPath;
circleLayer.shadowOffset = CGSizeMake(0, shadowScale * length);
circleLayer.shadowOpacity = .5;
circleLayer.shadowRadius = shadowRadiusScale * length;
[self.layer addSublayer:circleLayer];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
// size appropriately
[self addSubview:imageView];
CALayer *imageLayer = imageView.layer;
[imageLayer setMasksToBounds:YES];
[imageLayer setCornerRadius:((imageView.frame.size.width - innerRing / 2) / 2)];
}