ScrollView上新增pageView並加CollectionView

weixin_34208283發表於2017-02-05
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];

}

```

這樣整體就完成了。

相關文章