CAShapeLayer有时可见,但有时不是

时间:2016-02-24 20:46:31

标签: ios objective-c iphone cashapelayer

在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;
}

我认为我没有做错任何事,在代码中的其他地方没有做任何其他事情。

0 个答案:

没有答案