网易导航条心得(iOS版)
一、界面分析
首先,我们必须弄清楚它的图层组成。所有的界面都是承载在一个ViewController上的,这一点事肯定的,我们把这个ViewController叫做MainVC;其次MainVC上最好放一个封装好的容器,一下的就把剩下的图层全部包括进去。
其次,就是这个容器的设计。在这个容器上有两个scrollView,topScroll上放置的是几个按钮,bottomScroll上放置的是几个ViewController,两个scrollView需要实现联动;
最后,两个scrollView之间还有个小滑条,跟着动,可以提高用户体验。
二、具体实现
1,容器的实现
首先实现小滑条,这其实就是一个带颜色的view条,设置好frame后在scrollView的代理方法中控制着位置的偏移,没什么亮点可讲。
其次是topScroll的设计,在有导航条的情况下,scrollView会自动下压64像素,所以一般情况需要设置self.automaticallyAdjustsScrollViewInsets=NO;但是在本项目中,使用此方法并不能有效解决该问题。不清楚为什么,这还需要查资料好好研究研究。另外一种方法是,设置topScroll上面的控件的时候将其坐标设置得上移64像素。
再次是topScroll上按钮点击事件的实现。oldBtn.selected设置为NO,当前btn.selected设置为YES。接下来第一次设置联动,根据btn的tag值决定bottomScroll的contentOffset,一个btn对应一个bottomScroll上的一个VeiwController,然后创建一个动画,使bin放大1.3倍,达到字体放大的效果。接下来是第二次设置联动,根据slider小滑块的MaxX,来设置topBar的contentOffset(在iOS的界面布局中我们可以使用CGRectGetMaxX 这个方法来方便的获取当前控件的x坐标值+宽度的数值)。第三次联动的设计,在scrollView的代理方法中设置slider的frame,以达到移动的效果。
btn.tag==>>VC==>>Slider==>>topBar
基本思路就是这样,具体尺寸坐标,不难解决。