2011-08-16 9 views
3

私はCocoaアプリケーションでNSScrollViewを使用しています。水平スクロールの長さをカスタマイズしたいと思います。スクロールビューの内容は、左側の固定幅領域と右側の動的幅領域の2つの主要領域に分割されています。左側の領域は垂直方向にのみスクロールします。ユーザーが左右にスクロールすると、ビューの左側に固定されたままになります。ここでは、ビューのスクリーンショットがスクロールされます:私は、水平スクロールバーが左側の固定の領域をオーバーラップさせたくないNSScrollerの長さを変更する

http://jarodlong.com/dropbox/nsscroller_issue.png

。それは右の領域に限定されるべきです。

NSScrollViewをサブクラス化せずにこれを行う方法はありますか?私は実際にサブクラス化する必要はないと思っていますが、それが必要な場合は、そうするときに何を調べるべきですか?

私は水平スクロールのフレームを設定しようとしましたが、NSScrollViewは常にスクロールバーのサイズをエリア全体に合わせるようにしています。

答えて

2

私はこの状況で、2つの別々のスクロールビューを使用したいと思います。

[OK]を友達とチェックしたところ、NSScrollerのインスタンスがNSScrollviewに残っていますが、それらはGLサーフェス上に描画されています。テストしたが、このようなものは、トリックを行う必要がありません。

@implementation MyScrollView : NSScrollView 

- (void) tile 
{ 
[super tile]; 
id scroller = [self horizontalScroller]; 
NSRect scrollerRect = [scroller frame]; 
    // adjust scrollerRect as you want to here 
[scroller setFrame:scrollerRect]; 
} 
+0

これは最初からやりたいと思っていたのであればおそらく最善の方法でしたが、すべてのコンテンツが単一のビューであり、これを複数のビューにリファクタリングするのはかなり手間がかかりますポイント。 スクロールバーのサイズを除いてすべてが完全に機能するので、スクロールバーのサイズを変更する方法があれば、今のところ最も簡単な解決策になります。 – jlong64

+0

さて、Snow Leopardに戻って、NSScrollviewとoverride tileのサブクラスを作成できますが、新しい自動隠蔽スクロールがまだNSScrollerインスタンスであるかどうかはわかりません。 – NSResponder

+0

実際には完全に機能しました!私はどういうわけかタイル方法を逃しました(おそらくその名前がその目的を示すものではないからです)が、新しいライオンスクロールはまだNSScrollersのように見えます。 – jlong64

1

私はあなたの窓に2 NSScrollViewsを追加すると思います。左側には垂直スクロールのみがサポートされ、右側にはスクロールが水平方向にスクロールされます。

関連する問題