这个布局困扰了我好几天,因为要整个屏幕滑动,并且三个collectionView要能够左右滑动,点击切换。
说到底还是基础知识不太好,对scrollview的使用不是特别深入。
最后这个视图我用到了PageViewController来控制三个子控制器,整个的界面是一个UIscrollView
视图的切换按钮需要自己自定义。并且和子控制器建立关联。
其中处理滑动问题上我用了通知。因为子控制器和父控制器是两个控制器,我感觉用通知比较方便。
在第三个子控制器上滑动方法上写个通知,当向上滑动,或者向下滑动时,让父控制器中的scrollview的contentOffset进行改变,从而达到整体滑动的效果。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat y = scrollView.contentOffset.y;
NSLog(@"%f",y);
//通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"scrollViewThree" object:nil userInfo:@{@"y":@(scrollView.contentOffset.y)}];
}
在父控制器的viewdidload中接收。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(threeVC:) name:@"scrollViewThree" object:nil];
//通知
- (void)threeVC:(NSNotification *)not
{
if ([not.userInfo[@"y"] floatValue] <= 0) {
[self.scrollView setContentOffset:CGPointMake(0, -64)];
} else {
if ([not.userInfo[@"y"] floatValue] > 240) {
return;
} else {
[self.scrollView setContentOffset:CGPointMake(0, [not.userInfo[@"y"] floatValue])];
}
}
}
最后再移除
//删除通知
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"scrollViewThree" object:nil];
}
这样整体就完成了。
另一种方式: 利用父子控制器来管理具体代码在这里->demo