目錄
- 仿淘寶上拉進(jìn)入詳情頁
- 系統(tǒng)的圖像濾鏡使用
- 萬花筒
- 簡單的仿簡書個人詳情頁的上拉菜單
仿淘寶上拉進(jìn)入詳情頁
仿淘寶上拉進(jìn)入詳情頁git鏈接
gif:
系統(tǒng)的圖像濾鏡使用
系統(tǒng)的圖像濾鏡使用git鏈接
gif:
萬花筒
萬花筒git鏈接
gif:
簡單的仿簡書個人詳情頁的上拉菜單
gif:
因為實在簡單思喊,就不上傳git了。這里簡單說下吧:
上面一個View次酌,中間一個View恨课,下面一個tableView舆乔,都放在一個scrollView上
通過對tableView的contentOffset監(jiān)聽,如果向下滾動而scrollView沒有滾動到midView顯示在左上角剂公,就讓scrollView去滾動希俩。方法是禁止tableView的滾動與交互。
通過對scrollView的contentOffset監(jiān)聽纲辽,如果scrollView滾動到midView顯示在左上角颜武,就讓tableView允許交互與滾動。
核心代碼:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
//滾動的是tableView而不是scrollView
if (object == _botTableView) {
CGFloat contentOffsetY = [change[@"new"] CGPointValue].y;
if (_scrollView.contentOffset.y < _topView.frame.size.height) {
//禁止tableView滾動與交互
_botTableView.userInteractionEnabled = NO;
_botTableView.scrollEnabled = NO;
}else {
//如果scrollView滾過頭了拖吼,就重新設(shè)置一下偏移值
if (_scrollView.contentOffset.y > _topView.frame.size.height) {
[_scrollView setContentOffset:CGPointMake(0, _topView.frame.size.height)];
}
//如果tableView上滾到頭了還在滾鳞上,就讓scrollView滾動
if (_botTableView.contentOffset.y < 0) {
[_scrollView setContentOffset:CGPointMake(0, contentOffsetY) animated:NO];
}
}
}else if (object == _scrollView){
//如果滾動到midView顯示在左上角時,就讓tableView去滾動
if (_scrollView.contentOffset.y >= _topView.frame.size.height) {
_botTableView.userInteractionEnabled = YES;
_botTableView.scrollEnabled = YES;
}
}
else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}