2012-06-28 5 views
6

Scroller http://f.cl.ly/items/1b1v2D2X1D092k2R1C0i/Scrollbar.pngNSScrollViewでスクロールの背景が透明でない

こんにちは!ビューベースのNSTableViewを持つNSScrollViewを使用しています。テーブルにテーブルセルが追加されるたびにスクロールバーが表示され、スクロールバーには透明な背景がないことがわかります。何らかの理由で、背景には白い画像が見えます。

私はIBを使ってNSScrollViewとNSTableViewをセットアップしましたが、私はscrollerのバックグラウンドを無効にできるオプションを見つけることができません。これを引き起こしている可能性のあるアイデアは何ですか?

更新:Xcodeで私のNSScrollViewの設定

Xcode http://f.cl.ly/items/2R0k1x0T1X0A160E3l2i/Screen%20Shot%202012-06-29%20at%2002.06.32.png

答えて

2

私の唯一の提案は、あなたのNSScrollersは、デフォルトのスタイルである、または使用している場合は+ (BOOL)isCompatibleWithOverlayScrollersをオーバーライドするクラスに設定されていることを確認することですカスタムスクロール

IBでは、「Scroller Knobs」で「Default Style」が選択されていることを確認してください。

enter image description here


OS XライオンSnow LeopardのとSLの前に存在するバージョン(従来のスクロールバー)とは対照的に、新しいNSScrollers(オーバーレイスクロールバー)を導入しました。オーバーレイスクロールは、フェードイン/アウトするタイプで、眩しい白い背景なしにコンテンツの上に描画します。

いくつかのシナリオでは、新しいオーバーレイスクロールの代わりに従来のスクロールバーを使用することを決めました(たとえば、スクロールホイールを使用しているポインターデバイスが接続されている場合、スクロールして隠れたオーバーレイスクロールを正確にスクロールできません)

The OS X 10.7 documentationはよく説明しています。要約すると、a)ユーザーがオーバーレイスクロールを無効にしているか、b)サポートされていないデバイスが接続されているか、c)NSScrollerのサブクラス化、アクセサリビューの追加、または+ (BOOL)isCompatibleWithOverlayScrollersのオーバーライドを忘れていないかを確認します。

サポートされていないデバイス(たとえば、フェードイン/アウトしないコンテンツの上に灰色のスクロールバーが表示されます)をサポートしたい場合は、NSScrollerをサブクラス化してカスタム描画する必要があります。 Twitter for Macのようなアプリケーションはこれを行います。

+0

私はカスタムスクロールを使用していません。デフォルトのスタイルを使用しても、残念なことに変更されませんでした。NSScrollViewの設定のイメージを使って投稿を更新しました。私はそれが常にそうではなかったことを知っています。 – iMaddin

+0

あなたはSnow Leopardのような建物ですか? – Vervious

+1

a)ユーザーがオーバーレイスクロールを使用しないように明示的に設定していないこと、b)マウスが接続されていないこと、c)スクロールビューにアクセサリビューがないことを確認することも良いかもしれません。 – Vervious

16

NSScrollerをオーバーライドし、次の操作を行います。これにより、透明な背景が得られます。私にとって

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

ありがとうございます。出来た。 :) – Sid

+0

ありがとうトン! – user361526

+0

これを拡張してもいいですか?私はこのような答えをいくつか見てきました。確かにこれを私のプログラムにコピーすると、実際にどこかから呼ばれなければ動作しません。 – maxisme

1

、私のビューコントローラに私のようなスクロールのスタイルを設定します。

[_scrollView setScrollerStyle:NSScrollerStyleOverlay]; 

これは、スクロールバーが透明な背景を持っていました。

-1

あなたはNSScrollViewの透明性を達成したい、あるいは単にスクロールビューのための明確な背景をしたい場合は...ちょうどNSScrollViewのsetDrawsBackgroundプロパティの使用を作る、すなわち:

[scrollView setDrawsBackground:NO]; 

・ホープこれは誰かに役立ちます。ありがとう:)

+1

質問は、NSScrollerViewではなく、NSScrollerの背景についてです。あなたの答えは、NSScrollerの背景を変更しません。 – Ely