(я уже читал эту страницу, но это не помогло мне CALayer not displaying)CALayer не отображается
У меня есть класс с именем Image
, который имеет это поле данных:
uint8_t *data;
Я уже использую это data
для отображения этого Image
на CALayer
, что я получил код сбора из Интернета.
Я видел, как создать в моем приложении еще одно окно, и я положил в него NSView
, чтобы отобразить Image
, используя этот метод, я намерен отобразить гистограмму последней, но теперь я просто пытаюсь отобразить снова тот же изображение:
-(void)wrapImageToCALayer: (CALayer*) layer{
if(!layer) return;
CGColorSpaceRef grayColorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate(data, width, height, 8, step, grayColorSpace, kCGImageAlphaNone);
CGImageRef dstImage = CGBitmapContextCreateImage(context);
dispatch_sync(dispatch_get_main_queue(), ^{
layer.contents = (__bridge id)dstImage;
});
CGImageRelease(dstImage);
CGContextRelease(context);
CGColorSpaceRelease(grayColorSpace);
}
И это мое окно Controler:
@implementation HistogramControllerWindowController
@synthesize display;
- (id)initWithWindow:(NSWindow *)window{
self = [super initWithWindow:window];
if (self) {
// Initialization code here.
}
return self;
}
- (void)windowDidLoad
{
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
[super windowDidLoad];
histogramDisplayLayer = [CALayer layer];
[histogramDisplayLayer setContentsGravity:AVLayerVideoGravityResizeAspectFill];
histogramDisplayLayer.position = CGPointMake(display.frame.size.width/2., display.frame.size.height/2.);
[histogramDisplayLayer setNeedsDisplay];
[display.layer addSublayer: histogramDisplayLayer];
}
@end
И я звоню так:
[frame wrapImageToCALayer:histogramDisplayLayer];
Обратите внимание, что histogramDisplayLayer
внешнего (CALayer *)
Отображение кода, не потрудившись объяснить переменные, это одно. Добавление слоя к слою - это еще одна вещь. –
Извините, я не понял. Вы говорите, что я не должен этого делать? [display.layer addSublayer: histogramDisplayLayer]; –