0

コア アニメーション プログラミング ガイドを読むと、サブレイヤーはデフォルトで、ホスト ビューの境界を超えても、クリップされずに拡張できると考えるようになりました。しかし、それは私に起こっていることではありません。

レイヤーをホストするカスタム ビューを初期化する方法は次のとおりです。

- (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 の境界にクリップされます。私は何が欠けていますか?

4

1 に答える 1

5

トリックは、レイヤーを持つ別のビュー (おそらくウィンドウのコンテンツ ビュー) にビューを含める必要があるようです。(それは文書化されていますか?)

于 2013-10-09T21:00:48.683 に答える