我有一个简单的自定义 NSView,它有一个标签和一个图像。目前该视图运行良好(所有拇指都是我的自定义视图的实例):
但是,我想设置这些缩略图的不透明度。设置viewInstance.layer.opacity
不能按原样layer
工作nil
。当我[viewInstance setWantsLayer:YES]
第一次在某处使用并设置不透明度时,文本的不透明度会发生变化(正确显示),但图像视图完全消失:
我尝试先创建一个图层,分配它,然后setWantsLayer:
在阅读此问题后调用:How to add a CALayer to an NSView on Mac OS X但没有任何改变:
CALayer *selfLayer = [[CALayer alloc] init];
[selfLayer setFrame:CGRectMake(0, 0, 100, 100)];
[self setLayer:selfLayer];
[self setWantsLayer:YES];
我已经尝试了创建图层并将其显示为图像视图的所有组合(只是调用setWantsLayer:
,创建图层,然后分配它,调用display
它的方法),但仍然没有任何变化:
[self addSubview:self.imageView];
CALayer *imageLayer = [[CALayer alloc] init];
[imageLayer setFrame:CGRectMake(0, 0, 100, 100)];
[self.imageView setLayer:imageLayer];
[self.imageView setWantsLayer:YES];
我尝试将图像视图的图层添加为主视图的子图层,然后显示它:
[self.layer addSublayer:self.imageView.layer];
[self.imageView.layer display];
[self.layer display];
但是,图像不会显示,而文本总是正确显示。当我注释掉关于分配和想要图层的代码时,图像再次显示,但显然,我不能使用图层不透明度。我在使用 OS X SDK 10.8 的 OS X Mavericks 上。我究竟做错了什么?
更新:我最终完全摆脱并通过设置图层的属性直接将其NSImageView
绘制到图层中。然而,这只是解决我这个项目问题的另一种方法,它仍然没有回答原来的问题。NSImage
contents