2012-02-28 16 views
1

私はそれにカスタムグリッドを持つiPadアプリを設計しています。グリッドは、異なる色で、単一の文字を含む単純な幾何学的図形を表示します。これらは、ユーザーの操作に基づいて頻繁に更新されます。iPadにカスタムグリッドを実装するにはどうすればよいですか?

グリッドは画面のサイズより大きく、両方向に表示されるため、スクロール/パンする必要があります。

トップ・ローとトップ・カラムも "フリーズ"する必要があります。トップ・ローは上部に残りますが、その中のコンテンツは残りのグリッドと水平方向にスクロールし、最初のカラムは左側に残りますコンテンツはグリッドの残りの部分とともに真実にスクロールします。

最初の列の内容は幅がある可能性があるため、ユーザーがサイズを変更できるようにする必要があります。

私はこれを設計する最良の方法に苦労しています。すべての描画とインタラクションを手動で管理すると、単一のカスタムビューとして持つのが最も簡単かもしれないと私は考えています。しかし、私はそれをやるより簡単な方法がないと感じるのを助けることができません。たぶん、適切な第三者コンポーネントであっても、より良い出発点になります。

アプリのこのコンポーネントを設計するにはどうすればよいでしょうか?

答えて

2

3つのUIScrollViewsを用意して、最初の列と最初の行を希望のサイズにするようにフレームを適切に設定できます。メインのグリッドの内容は右下のUIScrollViewにすることができます。

コントローラクラスは、すべてのビューのUIScrollViewDelegateにすることができます。そのフレームの幅と同じ幅であることが第1列UIScrolViewのcontentsizeを設定するが、高含有量のために適切なサイズは、1行目のUIScrollViewのコンテンツのためにそのフレームと同じ高さが、右の幅を有していなければなりません、左下のUIScrollViewのコンテンツサイズは、グリッドコンテンツのサイズとして設定されます。それらのいずれかがとてもスクロールした1チェックし、適切にtehの他の二つをスクロールスクロールしたとき

- (void) scrollViewDidScroll:(UIScrollView*)scrollView方法

が呼び出されます。

すなわち

//Declared and positioned somewhere earlier, like in the .h 
UIScrollView* firstCol; 
UIScrollView* firstRow; 
UIScrollView* mainGrid; 

- (void) scrollViewDidScroll:(UIScrollView*)scrollView { 
    if (scrollView == firstCol) { 
     CGPoint offset = mainGrid.contentOffset; 
     offset.y = firstCol.contentOffset.y 
     [mainGrid setContentOffset:offset]; 
    } 
    else if (scrollView == firstRow) { 
     CGPoint offset = mainGrid.contentOffset; 
     offset.x = firstRow.contentOffset.x 
     [mainGrid setContentOffset:offset]; 
    } 
    else if (scrollView == mainGrid) { 
     CGPoint offset = firstRow.contentOffset; 
     offset.x = mainGrid.contentOffset.x; 
     [firstRow setContentOffset:offset]; 
     offset = firstCol.contentOffset; 
     offset.y = mainGrid.contentOffset.y; 
     [firstCol setContentOffset:offset]; 
    } 
} 
0

UICollectionViewはそれをかなり良い仕事をしていません。しかし、データグリッドが必要な場合はthis oneをご覧ください。それはアルファ段階ですが、1〜2ヶ月で非常に強力なものになるでしょう。どんな提案も歓迎されており、もちろん無料です。

関連する問題