2

Cocoa でタイムライン コントロールを作成しようとしています。これが私が達成しようとしていることです。基本的に標準的なタイムラインのデザインです。

とはいえ、どのようなアプローチをとればよいかわかりません。問題は、上部のルーラー、左側のトラック リスト、および下部のオーディオ波形表示にあります。これらの 3 つの部分は、常に表示され、エッジに「くっつく」必要があります。ルーラーとオーディオ波形は水平方向にのみスクロールする必要がありますが、左側のトラック リストは垂直方向にのみスクロールする必要があります。

最上位の定規については、単なる定規なので NSRulerView が適しているようです。

左のビューと下のビューの場合、どちらのルートを取るべきかわかりません。トラック リストに幅の広い垂直方向の NSRulerView を使用して遊んでみました。これは機能しますが、追加の問題が発生します。例: トップ ルーラーはトラック リストの上に表示されます。

これまでに 4 つのオプションを作成しました。

  1. NSRulerView を忘れて、ドキュメント ビューですべてのカスタムを描画します。これは実行可能に思えますが、NSRulerView 関数に組み込まれている回避策です。また、スクロールバーを短くして、サイドビューとトップビューに重ならないようにする方法を見つける必要があります。

  2. 上部と左側に NSRulerViews を使用します。下側は、おそらくドキュメント ビューで手動で描画されます。

  3. 左側のビューをスクロール ビューの外側に配置し、メインのスクロール ビューにリンクして手動で上下にスクロールします。上部に NSRulerView を使用し、ドキュメント ビューで音声波形を手動で描画します。

  4. 別の NSScrollView に埋め込まれた NSScrollView。外側のスクロール ビューは水平スクロールを処理し、内側のスクロール ビューは垂直スクロールを処理します。可能だと思いますが、ハッキーなようです。

つまり、私の質問は次のようになります。誰かがこの問題に光を当てて、私を正しい方向に向けることができますか?

4

1 に答える 1

4

私が理解していること:

  • NSScrollViewの左側に、水平スクロールを無視してNSScrollViewで垂直方向にスクロールするビューが必要です。

  • 垂直スクロールを無視しながら、NSScrollViewで水平方向にスクロールするNSScrollViewの下のビューが必要です。

  • あなたは支配者が欲しい。

このタスクを実行するには:

  • オーバーラップせず、相互に継承しない3つの個別のスクロールビューを使用します。

  • 表示したいビューでルーラーをアクティブにします。

  • スクロールビューを同期します(一方がスクロールすると、もう一方がそれに応じてスクロールするように)。

スクロールビューを同期する方法はヘルプにあります。「ユーザーエクスペリエンス」>「コントロール」>「Mac用スクロールビュープログラミングガイド」>「スクロールビューの同期」を参照してください。これは、NSScrollViewのヘルプガイドのヘッダーにも間接的にリンクされています。

サイズ変更を簡単にするために3つのスクロールビューをNSSplitViewに含める場合は、未使用のコーナー(コントロールを配置するのに適した場所)を使用するために4番目のビューを追加する必要があります。NSSplitViewは垂直方向または水平方向にしか分割できないため、2つの分割ビューを含むNSSplitViewを作成する必要があります。これらの分割ビューには、実際に表示される2つのビューが含まれます(一方向に分割してから他の方向に分割します)。分割されたビューのサイズ変更は、4つのビューすべての真っ直ぐなクロスを維持するために、スクロールが同期されるのと同じように同期される必要があります。

于 2012-09-15T16:34:45.227 に答える