【问题标题】:NSImageView with CALayer on Top顶部带有 CALayer 的 NSImageView
【发布时间】:2014-08-30 20:41:01
【问题描述】:

这里的目标是在用户看到的 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;

    }
}

这里的焦点是黄色框。我在另一个项目中为自定义 NSView 提供了类似的代码,看起来不错,但不明白为什么这不适用于 NSImageView。

【问题讨论】:

标签: macos cocoa core-animation calayer nsview


【解决方案1】:

感谢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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多