在我的项目中,我有一个UITableView,它包含水平滚动UICollectionViews。因此,表视图中的每个单元格都是一个新的集合视图。我需要在每个单元格的左侧有一个交互式视图。该视图将沿左侧折叠,但如果您点击该视图,它将动画打开一点点。如果集合视图一直向左滚动,即从头开始,它将被打开。一旦用户开始滚动集合视图,它将自动关闭。
这是一个直观的例子:
表视图单元格..
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______|__________________|
如何才能在我的单元格的左侧安装此交互式控制器,该控制器已经包含集合视图?
此外,如果有任何第三方控件用于此类内容,那也会很棒!
答案 0 :(得分: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;
}];
}