8

洗練されたサブクラスを作成しましたが、脇に置くのではなく、NSScroller上にオーバーレイする方法がわかりません。NSScrollViewdocumentView

ここに画像の説明を入力

NSCollectionViewここでは、幅を 100% にしたいa の背景が表示され、スクローラーが上に配置されます。clearColor現在、 で描画すると透明ではなく黒として表示されるため、スクローラーに白い背景を設定する必要があります。

私はこれについて間違った方法で進んでいますか?ここで明らかな何かが欠けていますか?のコンテンツのNSScroller上にある透明な追跡の動作を実現するにはどうすればよいですか?NSScrollView

4

3 に答える 3

9

I was able to get the positioning by implementing tile in the subclass OF NSSCROLLVIEW

- (void)tile {
    [super tile];
    [[self contentView] setFrame:[self bounds]];
}

And it turns out that trying to draw clear color was the problem to begin with. In the scroller subclass, I just omitted any drawing that had to do with the slider track completely BY OVERRIDING DRAWRECT: OF THE NSSCROLLER SUBCLASS, LIKE SO:

- (void)drawRect:(NSRect)dirtyRect
{
    [self drawKnob];
}

ここに画像の説明を入力

于 2011-03-09T22:05:24.770 に答える
1

これが正しく機能するには、scrollView のレイヤー バッキングを有効にする必要があることに注意してください。

つまり、次のように呼び出します。

[scrollViewInstance setWantsLayer:YES];

または Interface Builder で設定します。

これを行わないと、scrollView の contentView がスクローラーの上に描画されます。また、あなたがやっていることは本質的に2つのNSViewをオーバーラップしていることに注意する必要があります(NSScrollViewの上にNSScroller ---両方ともNSViewから継承しています。) OS の (10.6 ダウン)。CALayers をオンにすると機能するようですが、それでも注意が必要です。もちろん、レイヤーをオンにすると、描画パフォーマンスが大幅に低下する可能性があります。

詳細については、この SO の質問を参照してください:重複する NSView 兄弟を処理する適切な方法はありますか?

于 2011-05-26T21:44:45.273 に答える
-2

この色はどうですか:[NSColor colorWithCalibratedRed:0.0 green:0.0 blue:0.0 alpha:0.0] インターフェイス ビルダーでサイズを変更する必要があると思います。

于 2011-03-09T20:42:15.567 に答える