码迷,mamicode.com
首页 > 其他好文 > 详细

首页功能添加(三)

时间:2017-03-24 14:47:01      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:标题栏   滚动视图   

   接上一篇,pageTitleView和pageContentView内部的逻辑功能已经实现,然后是相互之间的交互了。

  首先是点击上方标题栏实现对应的下方视图切换,这里使用的代理协议

      技术分享

   如上所示,在点击事件中将得到的当前标题下标传出去,在HomeVC里遵循协议,并在协议方法中拿到点击的标题下标,此时可以对pageContentView进行处理,让其滚动到相应的视图。(因为内部使用的是collectView,所以既可以使用setContentOffset的方法,也可以使用scrollToItem的方法)

   然后是滑动pageContentView,使上方的PageTitleView发生对应联动。同样使用代理协议,因为collectView本身也是滚动视图,所以直接检测它的滚动视图的代理方法即可。这里要分两种情况,左滑和右滑,如下是判断的方法

     技术分享

  其中sourceIndex为原始视图的下标,targetIndex为将要滑到的视图下标,

progress为滑动比例,将三个参数使用代理传到代理处。代理调用其代理方法,再使用这些参数来改变pageTitleView的标题的显示效果。

     技术分享

  以上颜色的渐变会比较复杂,需要理解这里设置的宏,当然,还有注意上图的最后一句代码,点击完后要把目标视图的下标也赋值给当前要高亮的标题哟~

     技术分享

  这里需要提醒一下:在pageTitleView上的某个标题时,下方的pageContentView联动使自身的collectView滚动起来,这里因为我们在滚动视图的代理里改变过pageTitleView的一些参数,所以这里会在此调用,也就是说,一次点击还引起了一次手势的滑动事件,这会影响视图变化的流畅性。为了解决这个问题,需要设置一个bool值变量来进行检测。

  当用手点击pageTitleView上的标题时,这里调用的是pageContentView暴露在外面的方法,所以在这里将这个bool值设为true,代表阻止,当在滚动视图代理的didscroll方法被调用时做一下判断,如果这个bool值为true则直接return。反之,如果scrollViewWillBeginDragging被调用,则设置为false,因为非手势是不会调用这个方法的。

    

首页功能添加(三)

标签:标题栏   滚动视图   

原文地址:http://11572149.blog.51cto.com/11562149/1909851

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!