因为最近公司的项目之中用到了这个功能,所以在完成了之后,总结一下。先上效果图
原理其实很简单,主要是监听父TableView的Scroll事件,根据contentOffset去判定导航栏的位置
//监听tableView的滑动方法,监听segView的Y轴坐标位置,动态修改segView的Y轴坐标
#pragma makr TableVie的代理方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
//移动到顶部
if (scrollView.contentOffset.y >= CGRectGetMaxY(self.summaryView.frame) + 8) {
if (!self.isSegTop) {
self.isSegTop = YES;
CGRect frm = self.segView.frame;
frm.origin.y = 0;
self.segView.frame = frm;
[self.view addSubview:self.segView];
}
}
//离开顶部
else{
if (self.isSegTop) {
self.isSegTop = NO;
CGRect frm = self.segView.frame;
frm.origin.y = CGRectGetMaxY(self.summaryView.frame) + 8;
self.segView.frame = frm;
[self.headerView addSubview:self.segView];
}
}
}
分页的是借用了网上使用比较广泛的iCarousel,再次感谢iCarousel的作者。
源码地址:http://download.csdn.net/detail/u011068996/9166137
站在巨人的肩膀上,我们才能看的更远!