ScrollView上添加pageView并加CollectionView更新

2518528-2a04a8d78e808d81.gif

这个布局困扰了我好几天,因为要整个屏幕滑动,并且三个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

你可能感兴趣的:(ScrollView上添加pageView并加CollectionView更新)