0

私のプロジェクトでは、水平スクロール UICollectionViews を保持する UITableView があります。したがって、テーブル ビューの各セルは新しいコレクション ビューです。各セルの左側にインタラクティブなビューが必要です。そのビューは左側に沿って折りたたまれますが、そのビューをタップするとアニメーションで少し開きます。コレクション ビューを左端まで、つまり先頭までスクロールすると、コレクション ビューが開きます。ユーザーがコレクション ビューのスクロールを開始すると、コレクション ビューは自動的に閉じます。

視覚的な例を次に示します。

テーブル ビュー セル..

The view is collapsed in this image.
____________________________
|V |                       |
|i |    CollectionView     |
|e |    Scrolls </>        |
|w_|_______________________|    


The view is open in this image. The ways it opens are described above.
____________________________
|V      |                  |
|i      |  CollectionView  |
|e      |  Scrolls </>     |
|w______|__________________|   

既にコレクション ビューが含まれているセルの左側に、このインタラクティブ コントローラーを配置するにはどうすればよいでしょうか?

また、このようなサードパーティ製のコントロールがあれば、それも素晴らしいでしょう!

4

1 に答える 1

1

それはUIView- ではなくUIViewController- の左側に配置されUICollectionViewます。

UICollectionViewデリゲート メソッド内では、最初のコレクション ビュー セルが表示されているときはいつでもcellForItemAtIndexPath展開および縮小できます。cellLeftSideView

if ([[cell_CollectionView indexPathsForVisibleItems] containsObject:[NSIndexPath indexPathForItem:0 inSection:0]]) {

    // First item IS showing in collection view
    // Make sure left side view is expanded

    [UIView animateWithDuration:0.5 animations:^{
        CGRect aFrame = cell_LeftSideView.frame;
        aFrame.size.width = kCellLeftSideView_Width_Max;    // <= #define maximum width value
        cell_LeftSideView.frame = aFrame;
    }];
}
else
{
    // First item is NOT showing in collection view
    // Make sure left side view is shrunk

    [UIView animateWithDuration:0.5 animations:^{
        CGRect aFrame = cell_LeftSideView.frame;
        aFrame.size.width = kCellLeftSideView_Width_Min;    // <= #define minimum width value
        cell_LeftSideView.frame = aFrame;
    }];
}
于 2013-10-07T03:28:32.590 に答える