美文网首页
仿网易新闻/头条首页的UI视图

仿网易新闻/头条首页的UI视图

作者: 想不出一个 | 来源:发表于2018-08-07 15:22 被阅读0次

    UIScrollView是我们开发中的一个常用的控件,在我各种各样的APP中几乎都能看到它的身影;下面我就来介绍一种使用scrollview来实现类似于网易新闻和今日头条UI的用法。效果图如下:

    效果图

    根据效果图可以分析出,整个UI是由两个UIScrollView组成。上面的是一个titleScrollView,用于显示标题;下面的是一个contentScrollView,用于显示内容。可能在添加两个scrollview后,会出现scrollview位置不正确的问题,一般设置self.automaticallyAdjustsScrollViewInsets = NO就可以解决问题。

    首先添加子控制器到当前的控制器中 [self setupChildVC],setupChildVC函数的具体实现为

    添加子控制器

    然后添加标题[self setupTitles];setupTitles函数的实现为:

    添加标题

    这里,我对UIlabel进行了封装,将一些基本的操作都封装在了TItlelabel里面。设置label的字体颜色和大小只要设置label的scale值就行了。

    封装的TitleLabel

    接下来,实现titleScrollview上面的一些功能,包括点击标题,contentScrollView移动到对应的位置,并加载相应的子控制器视图。

    title的点击实现的功能为:

    设置contentScrollView的位置

    把添加子控制器放在添加title之前是因为title是根据控制器的title来获取的。如果两个位置互换,会导致title的text没有值

    如何实现title点击居中呢?其实要实现title居中,只要titleScrollview偏移一个合适的值就能实现。那么这个偏移值是怎么计算的呢?在草稿上面画一个草图,你就能发现,title居中的这个偏移值,等于label的中心点的x值减去屏幕宽度的一半。title点击后居中是在- (void)scrollViewDidEndScrollingAnimation:(UIScrollView*)scrollView这个方法中实现,这个方法是在滑动动画结束后调用。在这个方法中来实现让我们选中的title居中

    title居中

    将控制器的view添加到contentScrollView。首先从子控制器获取将要显示的子控制器,然后再加载到contentScrollView。加载前需要判断是否已加载,没加载才需要加载,已经加载过则直接返回即可。

    添加控制器视图到contentScrollView

    最后来实现titleScrollview颜色转变和大小转变的功能。这就需要我们监控contentScrollView的偏移量,根据其当前的偏移量进行计算,获取scale,来这只左右两边label的字体颜色和字体大小。要想实时监控contentScrollView的偏移量就需要实现它的代理方法- (void)scrollViewDidScroll:(UIScrollView*)scrollView。具体实现如下:

    titleScrollview标题颜色和字体随偏移量的变化而变化

    以上就是实现这个功能的详细解析,其中UIlabel可以用UIButton代替。具体功能可能根据项目需要进行修改!!

    相关文章

      网友评论

          本文标题:仿网易新闻/头条首页的UI视图

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