CAShapeLayer问题 - 没有绘制nstableview

时间:2016-04-06 09:56:35

标签: macos nstableview cashapelayer

我自定义基于视图的tableview,在自定义NSView中,我在init中编写:

NSRect testRect = imageViewRect;

CGMutablePathRef roundPath = CGPathCreateMutable();
CGPathAddArc(roundPath, NULL,
             [self arcCenter:testRect].x,
             [self arcCenter:testRect].y,
             ArcRadius,
             2 * M_PI + M_PI_2,
             M_PI_2,
             YES);

self.backgroundLayer = [CAShapeLayer layer];
self.backgroundLayer.frame = testRect;
self.backgroundLayer.path = roundPath;
self.backgroundLayer.strokeColor = [[NSColor blueColor] CGColor];
self.backgroundLayer.fillColor = nil;
self.backgroundLayer.lineWidth = 5.0f;
self.backgroundLayer.lineJoin = kCALineJoinBevel;
[self.layer addSublayer:self.backgroundLayer];
[self.backgroundLayer setFillColor:[NSColor yellowColor].CGColor];

但是没有显示图层,我真的不知道问题出在哪里。

我在视图中写了这个,并在窗口中加载视图,图层显示正确。

1 个答案:

答案 0 :(得分:1)

你是否已经改变了自己的看法' self'图层支持的视图?你需要说

self.wantsLayer = true

之前可以进行任何与图层相关的操作。

引用documentation -

  

将此属性的值设置为true会将视图转换为   图层支持的视图 - 也就是说,视图使用CALayer对象进行管理   它呈现的内容。隐式导致创建图层支持的视图   该视图下的整个视图层次结构将成为图层备份。   因此,视图及其所有子视图(包括的子视图)   子视图)成为图层支持。此属性的默认值为   假的。