我自定义基于视图的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];
但是没有显示图层,我真的不知道问题出在哪里。
我在视图中写了这个,并在窗口中加载视图,图层显示正确。
答案 0 :(得分:1)
你是否已经改变了自己的看法' self'图层支持的视图?你需要说
self.wantsLayer = true
之前可以进行任何与图层相关的操作。
引用documentation -
将此属性的值设置为true会将视图转换为 图层支持的视图 - 也就是说,视图使用CALayer对象进行管理 它呈现的内容。隐式导致创建图层支持的视图 该视图下的整个视图层次结构将成为图层备份。 因此,视图及其所有子视图(包括的子视图) 子视图)成为图层支持。此属性的默认值为 假的。