一、效果图
二、分析界面结构
- 首页控制器HomeVC的viewyou两个子控件,
- 一个是标题菜单视图,它又有多个按钮子控件,和下面有一个红色的View指示器,点击按钮,让指示器执行动画
- 一个是UIScrollView(因为它里面的内容可以滚动,当然你可以用UICollectionView,这里就用UIScrollView了)
三、逻辑分析
- 1.在HomeVC的ViewDidLoad方法中,
- 添加标题菜单和UIScrollView两个子控件,
- 而且要设置它们的内边距,让标题菜单显示在导航栏下面,让UIScrollView显示在标题菜单下面。
- 接着要添加5个子控制器到HomeVC,为什么呢?因为5个子控制器的View要显示在HomeVC上,那么view的控制器必须要被强引用才ok
- 2.点击标题菜单的标题时,切换到对应的子控制器,而且让标题菜单的指示器执行动画,移动到点击的按钮下面
- 3.默认选择5个子控制器中的第一个子控制器
- 4.当手动滑动子控制器的时候,也要切换到对应的标题按钮和指示器执行动画
- .........等等
四、实现点击不同类别,加载指定类别的网络数据,并切换到指定的子控制器
思路分析
- 方案1(不可取):
- 提供一个属性Type,那么用户可以 修改
- 方案二:(不行):
- 提供一个只读属性,不行,因为我们提供属性的原因是,让外界不能只能获取不能修改Type,但是如果父类提供一个只读属性那么子类就赋予自己的特性修改了
- 方案三:(推荐)
- 父类提供一个get方法,这样外界不能修改,而子类可以还 重写get方法,赋予自己的特性