【问题标题】:Why is my CALayer being clipped by my NSView?为什么我的 CALayer 被我的 NSView 截断了?
【发布时间】:2013-10-09 18:30:54
【问题描述】:

Core Animation Programming Guide 让我相信,默认情况下,子层可以扩展到主机视图的边界之外而不会被剪裁。但这不是我正在发生的事情。

这是我初始化我的图层托管自定义视图的方法:

- (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 的范围内。我错过了什么?

【问题讨论】:

    标签: macos cocoa core-animation calayer


    【解决方案1】:

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

    【讨论】:

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