2012-03-02 10 views
0

UIScrollViewの という数多くの画像を使って(そしてロジックをリサイクルして)私のアプリにappleのscrollviewサンプルコードPhotoScrollerを使っていました。私は私のアプリでそれを実装し、それは正常に動作します。UIScrollView(PhotoScroller)のグリッドのような配置

今、上記と同様のアプリで作業していますが、 という違いがあり、画像をグリッドのような表示で読み込んでいます。 同じサンプルコードを使用した場合、リサイクルロジック以外はすべて正常に動作します。

xcode、可視領域を教えてくれない自分のフレームセットに問題があると思います。 グリッドの可視セットを設定する方法を教えてください scrollviewの構造を表示しますか?私が使用するコードは、

CGRect visibleBounds = _scrollView.boundsです。 // CGRect gridElementvisibleBounds = CGRectMake(0、0、212、200); int firstNeededPageIndex = floorf(CGRectGetMinX(visibleBounds) - CGRectGetWidth(visibleBounds)); int lastNeededPageIndex = floorf(CGRectGetMaxX(visibleBounds)-1) - CGRectGetWidth(visibleBounds)); firstNeededPageIndex = MAX(firstNeededPageIndex、0); lastNeededPageIndex = MIN(lastNeededPageIndex、[self imageCount] - 1); _scrollView私は使用UIScrollViewのインスタンスと私が使用 gridElementある

は、フレームサイズ(0、0、212、200)です。 scrollView境界を占めるグリッド要素の番号 は、 3 x 3(9)です。

私は500以上の画像を読み込むので、tableViews(AQGridViewなど)のようなグリッドを使用したくありません。 上記のコードを で修正しなければならないものを見つけてください。

答えて

0

私はcontentOffsetを使用して可視領域を取得することで問題をほぼ解決しました。 ここでは、私がそれを動作させるために何をしたかを示すコードを示します。私はcontentOffset.y/960を取得することにより、表示領域を発見し、上記のようfirstNeededPageIndexを得た

int firstNeededPageIndex = ((int)_scrollView.contentOffset.y/960) * 9; 
int lastNeededPageIndex = ((int)_scrollView.contentOffset.y/960) * 9 + 17; 

。 スクロールビューがスクロールすると、非表示になっているページのコンポーネントには9個の要素が含まれ、表示されている連続するページ(lastNeededPageIndexで取得)にはコンポーネントがありません。 それゆえ、私はスクロール中に可視領域に18個のオブジェクトを作って可視にしました。 したがって、スクロール中に表示されるオブジェクトは、0番目のオブジェクトから17番目のオブジェクトになりました。

スクロールビューがスクロールするたびに、可視領域(contentOffSetから取得)の18個のコンポーネント(0〜17)がリサイクルされます。

関連する問題