美文网首页ios新建专题控件封装
仿照写(类网易新闻,什么值得买)界面结构的思考

仿照写(类网易新闻,什么值得买)界面结构的思考

作者: TEASON | 来源:发表于2016-01-12 16:49 被阅读2148次

    请支持原创, 如需转载, 请注明出处@TEASON

    之前的文章里有说要写关于UITableView见解的两篇, 上一篇在这里, 这是下集.

    下面的图是网易新闻客户端, 这种结构的首页挺多的, 我仿照写了一下, 总结了下思路, 要实现不是特别困难, 不过有一些细节和问题我觉得有必要注意.


    wangyi.png

    下面是我认为需要注意的地方 .

    1.首先, 他是由什么控件组成的 ?
    上下两个scrollView, 上面那个控制标签, 下面控制内容, 互相对应切换.
    2.如何重用contentView
    如果是scrollview, 他里面的内容视图(contentView)要考虑重用, 不然极度浪费内存 .
    可能有两种可行的解决方案:
    方案(1)外部是scrollView,内容用三个tableView来回切换内容对应显示. 这个思路和这个demo(无限循环scrollview)一样一样, 他的优势是可以做成无限循环, 能从最后一张切换到第一张 .
    方案(2)用collectionView实现contentView重用. 每一个contentView作为一个collectionViewCell. collectionViewscrollview的子类,所以和第一条不矛盾, 能否通过继承layout实现这种表现.
    3.分离tableview表示逻辑
    这在我的一篇文章中提及, 不过这次我没有用block再回调回ctrller里, 这样比较适合这个项目, 方便让每个handler控制一个tableview的表示逻辑. 分工比较明确.
    于是, 在框架出来之后, 只需要传入handlerList即可.


    demo地址在此
    demo由于我是用方案一写的, 精力在自己写重用tableView上用了好多.不过demo里主要功能和思路都有所体现了 . 欢迎follow我
    关于方案二的版本重写collectionViewLayout , 写起来省事很多, 这个布局甚至能用storyboard直接0行代码弄出来布局, 实现起来相当容易,demo就不贴了. 但方案二不能循环. 方案一实现相对比较难, 而且主要是手动实现了view的重用和循环. 故给出方案一 .
    此外, 用UIPageViewController也可以解决,应该是方案三.做起来也比较简单.
    但. 我认为无论是哪一种方案. 都应该考虑controller过多内存紧张的处理. 我认为是用缓存做是最好的. 其实无论哪一种方案, 重要的是思考过程, 如果急于求成, 类似的框架网上随便找找一大堆, 但是不思考纯粹贴过来就没有意义了. 是不是?


    smzdm.png jianshu.png

    相关文章

      网友评论

      • Hesse_Huang:学习了
      • TEASON:此文已更新完结 :smile:
      • MarkLin:楼主为何不考虑一下pageViewController
        TEASON:@MarkLin
        谢谢你的好提议!
        已经实现了一个. 非常简单. 可以说是最简单的做法.
        不过无论哪一种, 都要考虑 controller list 的缓存.
        最近也在别人的做法. WMPageController 不错.
      • __Jason__:cell 对应的点击事件怎么实现?怎么跳转到下一级页面?急!!!
      • f68bcb6da716:我之前仿写的时候 用的是 scrollView + pageViewController 界面比较难复用,不过实现起来比较简单
      • 溪枫狼:我前几天封装了上面的滑动导航条,demo里也实现你这种类似的界面。关于下面的界面,暂时有三种思路,1.Scrollview+VC 2.CollectionView+VC 3.横的tableView及cell+VC,每个界面对应一个控制器,方便页面跳转。第一种缺点是难复用,下面界面少时适合用 ,第二种恰恰自带复用,少多皆宜,第三种比较麻烦(看别人这么用,tableView和cell都要旋转) 。想仿简书的那个界面,但是看上去只有三个界面用于左右滚动,暂时还没有清晰的思路。https://github.com/XiFengLang/JPSlideBar
        TEASON:@溪枫狼 我记得以前用过横过来的tableView, 那还是在没有collectionView之前我用的, 在有了collectionView之后,就不用了, 实现起来转两次, 坐标颠倒有点小麻烦

      本文标题:仿照写(类网易新闻,什么值得买)界面结构的思考

      本文链接:https://www.haomeiwen.com/subject/qrhckttx.html