1

添付の画像のようなタイムバーを作成する必要があります.青い線はいくつかのアクションを示す日付です.大きな赤い矢印マークは、青い線のいずれかを選択するためのスライドに使用されます. 背景のバーは年ごとに分かれています。小さな赤い円は年を示しています。

どのように始めればよいですか?

ありがとう

デモビュー

4

2 に答える 2

0

青いバーがあまり動かず、このビューのサイズを頻繁に変更する必要がない場合(通常、iPhoneの場合)、UIControl(またはUIView)をサブクラス化して自分で実装することをお勧めします。

NSDateオブジェクトと、などのメソッドを格納するNSArrayプロパティを使用しaddDate:て、他のオブジェクト(View Controllerなど)からコンテンツを変更します。これらのメソッドでは、渡された日付を追加または削除し、呼び出して線を再描画します。removeDate:removeDateAtIndex:[self setNeedsDisplay];

スライダー上の日付の位置(ピクセル単位)を計算し、特定の座標で日付を計算するには、いくつかの方法が必要になります。これは簡単に実行できるはずです(基本的な線形補間)。

そして、赤いスライダーが青い線だけを指すことができると仮定して(それらの間ではなく)、現在選択されている日付にNSDateポインター変数を追加します。の中に

drawRect:メソッドでは、CoreGraphics関数を使用してすべての線を描画する必要があります。これについてサポートが必要な場合は、ドキュメントを参照してください。Appleには素晴らしいサンプルアプリもいくつかあります。

赤いスライダーを表示するには、UIPanGestureRecognizerを使用してカスタムUIImageViewを追加し、ジェスチャハンドラー内で垂直方向にのみ移動するようにします。または、トラック画像なしでUISliderを追加することも可能かもしれません(私はそれについて100%確信していません)。いずれの場合も、ユーザーが移動して最も近い青い線にジャンプさせたら、スライダーの位置を調整する必要があります。

于 2012-05-14T12:51:52.233 に答える
0

大まかなアイデアは、 1. TimeBar 全体の長さを取得します。t とします。2. x=numberofYears*365 で割ります。t_eachday_pos=t/x とします。 3. 各日の位置を取得し、そのオフセットを daycount*t_eachday_pos として計算します。4. blueLine を customButton として追加します。5. 何らかのアクションを実行するには、x 日番号を渡します (例: 2 年目の 245 日など)。

これを試してみてください。アプリの1つで同じものを使用しましたが、機能しています

于 2012-05-14T12:55:06.180 に答える