NSImageView与CALayer在上面

时间:2014-08-30 20:41:01

标签: macos cocoa core-animation calayer nsview

这里的目标是在顶部"上设置一个选择层。用户看到的NSImageView。但是,我的选择层一直在"后面"不知何故。这是我在NSImageView子类中重写的-setImage:

-(void)setImage:(NSImage *)newImage {

    if(newImage) {

        // compute image location in view

        _imageLocation.x = ( [self frame].size.width - [newImage size].width ) / 2.0;
        _imageLocation.y = ( [self frame].size.height - [newImage size].height ) / 2.0;

        // call to parent
        [super setImage:newImage];

        if(_pixelDataManager) {
            _pixelDataManager = nil;
        }
        _pixelDataManager = [[PixelDataManager alloc] initWithImageForData:newImage];

        _selectionLayer = [CALayer layer];

        [_selectionLayer setBorderColor:[[NSColor yellowColor] CGColor]];

        [_selectionLayer setBorderWidth:2.0];

        [_selectionLayer setCornerRadius:0.0];

        [[self layer] addSublayer:_selectionLayer];

    }
    else {

        [super setImage:nil];
        _pixelDataManager = nil;
        _imageLocation.x = 0.0;
        _imageLocation.y = 0.0;

    }
}

Observe the yellow box behind the image

这里的重点是黄色方框。我在一个不同的项目中有一个自定义NSView的类似代码,看起来没问题,但是无法理解为什么这对NSImageView不起作用。

1 个答案:

答案 0 :(得分:0)

感谢mohacs,他/她在this comment -

中回答了问题
  

您可以尝试更改图层的z顺序。 http://stackoverflow.com/questions/25371109/z-index-of-image-and-separator-in-uitableviewcell/25372394#25372394 - mohacs 2014年8月30日21:04