ScrollView上添加pageView并加CollectionView

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

}

```

这样整体就完成了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容