在UICollectionViewCell内部我在initWithCoder中添加CAShapeLayer circle
;
所以在这里我没有做任何不寻常的事,很简单。但是当我启动应用程序时,圆圈有时是可见的,但有时却不是。
我记录了圆圈,我看到颜色,不透明度,路径和框架设置正确。但是在屏幕上没有圆圈。如果我开始滚动集合视图,则会立即显示圆圈。如果我触摸任何其他按钮或在屏幕上滚动。我甚至试图为你制作截图,但是在我拍摄截图的同时,圆圈立即显示出来。所以我无法向你展示这个问题。
我觉得这可能是iOS内部的一个错误。有没有办法强制重绘圆圈。
这是我的初始值
- (instancetype)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
CAShapeLayer *circle = [CAShapeLayer layer];
circle.contentsScale = SCREEN_SCALE;
circle.rasterizationScale = 2.0 * SCREEN_SCALE;
circle.shouldRasterize = YES;
circle.opacity = 1.0;
circle.backgroundColor = [UIColor clearColor].CGColor;
circle.fillColor = [UIColor grayColor].CGColor;
CGRect frame = CGRectMake(0, 0, 50, 50);
circle.frame = frame;
circle.path = [UIBezierPath bezierPathWithOvalInRect:frame].CGPath;
[self.layer addSublayer:circle];
}
return self;
}
我认为我没有做错任何事,在代码中的其他地方没有做任何其他事情。