7

スクローラー

やあ!ビューベースのNSTableViewを持つNSScrollViewを使用しています。テーブルがテーブルセルを追加するたびに、スクローラーが表示されます。これは、スクローラーの背景が透明でないことがわかるまでは問題ありません。どういうわけか、画像でわかるように、背景は白です。

IBを使用してNSScrollViewとNSTableViewを設定しましたが、スクローラーの背景を無効にできるオプションが見つかりません。これを引き起こした可能性のあるアイデアはありますか?

更新:XcodeでのNSScrollViewの設定

Xcode

4

4 に答える 4

19

NSScrollerをオーバーライドして、次のようにします。これにより、背景が透明になります。

- (void) drawRect: (NSRect) dirtyRect
{
    [self drawKnob];
}
于 2012-10-27T00:41:11.070 に答える
3

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

IBで、上から2番目の[スクローラーノブ]で[デフォルトスタイル]が選択されていることを確認します。

ここに画像の説明を入力してください


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

一部のシナリオでは、Lionは新しいオーバーレイスクローラーの代わりに従来のスクローラーを使用することを決定します(たとえば、スクロールホイールのないポインターデバイスが接続されている場合、非表示のオーバーレイスクローラーを正確にスクロールできないため)

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

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

于 2012-06-28T22:55:46.603 に答える
1

私の場合、View Controllerで、次のようなスクローラースタイルを設定しました。

[_scrollView setScrollerStyle:NSScrollerStyleOverlay]; 

これにより、スクローラーの背景が透明になりました。

于 2013-06-07T22:39:23.213 に答える
-4

NSScrollViewで透明性を実現したい場合、または単にスクロールビューの背景を明確にしたい場合はsetDrawsBackground、NSScrollViewのプロパティを使用してください。

[scrollView setDrawsBackground:NO];

これが誰かを助けることを願っています。ありがとう :)

于 2014-07-22T10:40:53.193 に答える