Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 为什么我的CALayer被我的NSView剪掉了?_Macos_Cocoa_Core Animation_Calayer - Fatal编程技术网

Macos 为什么我的CALayer被我的NSView剪掉了?

Macos 为什么我的CALayer被我的NSView剪掉了?,macos,cocoa,core-animation,calayer,Macos,Cocoa,Core Animation,Calayer,这让我相信,默认情况下,子层可以扩展到宿主视图的边界之外,而不会被剪裁。但对我来说,情况并非如此 以下是我如何初始化托管自定义视图的图层: - (id)initWithFrame:(NSRect)frame { self = [super initWithFrame:frame]; if (self != nil) { mBaseImage = [[NSImage imageNamed: @"Button.png"] retain]; mSlide

这让我相信,默认情况下,子层可以扩展到宿主视图的边界之外,而不会被剪裁。但对我来说,情况并非如此

以下是我如何初始化托管自定义视图的图层:

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self != nil) {
        mBaseImage = [[NSImage imageNamed: @"Button.png"] retain];
        mSliderImage = [[NSImage imageNamed: @"Track.png"] retain];

        mRootLayer = [CALayer layer];
        mRootLayer.masksToBounds = NO;
        [self setLayer: mRootLayer ];
        [self setWantsLayer: YES];
        mRootLayer.contents = mBaseImage;

        mSliderLayer = [CALayer layer];
        [mRootLayer addSublayer: mSliderLayer];
        NSSize imSize = [mSliderImage size];
        NSRect sliderBounds = NSMakeRect( 0.0f, 0.0f, imSize.width, imSize.height );
        mSliderLayer.bounds = sliderBounds;
        mSliderLayer.contents = mSliderImage;
        mSliderLayer.position = NSMakePoint( 31.0f, 31.0f );
    }

    return self;
}

主机视图和用作其内容的图像为62x62,而子层图像为90x10。但整个过程都被限制在62x62的范围内。我遗漏了什么?

技巧似乎是视图必须包含在另一个具有层的视图(可能是窗口的内容视图)中。(有文件记录吗?

技巧似乎是视图必须包含在另一个具有层的视图(可能是窗口的内容视图)中。(有记录吗?)