学习HM微博项目第1天

步骤:搭建基本环境 -> 展示子控制器 -> 项目分层 -> 增加导航功能 -> 增加导航栏按钮。

搭建基本环境

该项目使用代码搭建UI界面,所以在HMAppDelegate的didFinishLaunchingWithOptions方法中要创建窗口window并设置窗口的根控制器,如下:

学习HM微博项目第1天_第1张图片
创建窗口.png

删除storyboard后要记得:


删除storyboard.png

隐藏项目启动图的状态栏:


隐藏状态栏.png

在项目启动完毕重新显示状态栏:

重新显示状态栏.png

APP的界面:

学习HM微博项目第1天_第2张图片
搭建基本环境.png

展示子控制器

新建一个HMTabBarViewController类,在viewDidLoad方法中添加子控制器:


学习HM微博项目第1天_第3张图片
添加子控制器.png

将添加子控制器的代码抽取为方法addOneChirdVc:

学习HM微博项目第1天_第4张图片
抽取添加子控制器的详细代码.png

注:在iOS7中,会对selectedImage的图片进行再次渲染为蓝色,所以要显示原图,就必须得告诉他:不要渲染。

有时候,Image在不同版本的iOS中会提供不同的图片,他们的名称会有所不同,这时可对UIImage进行扩展:


学习HM微博项目第1天_第5张图片
UIImage+Extension.png

APP的界面:

学习HM微博项目第1天_第6张图片
展示子控制器.png

项目分层

HM微博项目按照的是功能模块对项目分层,并在每个模块里单独使用MVC模式,分层图如下:


学习HM微博项目第1天_第7张图片
HM微博项目分层.png

增加导航功能(添加导航控制器)

tabBar控制器的子控制器必须包装在导航控制器中,才能实现push等操作,如下:


学习HM微博项目第1天_第8张图片
将chirdVc包装在导航控制器中.png

在HMNavigationController类中,重写pushViewController方法,拦截所有push进来的子控制器,使push进来的子控制器能够隐藏tabBar低栏,如下:


学习HM微博项目第1天_第9张图片
拦截所有push进来的子控制器.png

在4个子控制器(继承于UITableViewController)中分别实现数据源方法:
HMHomeViewController.h,
HMMessageViewController.h,
HMDiscoverViewController.h,
HMProfileViewController.h,
如下:


学习HM微博项目第1天_第10张图片
数据源方法.png

在HMTabBarViewController类中,修改addOneChirdVc方法,设置导航栏和tabBar栏上的title,如下:

设置标题.png

APP的界面:

学习HM微博项目第1天_第11张图片
首页.png
学习HM微博项目第1天_第12张图片
消息.png
学习HM微博项目第1天_第13张图片
发现.png
学习HM微博项目第1天_第14张图片
我.png

增加导航栏按钮

在HMHomeViewController.h中,重写viewDidLoad方法,设置导航栏按钮,如下:

学习HM微博项目第1天_第15张图片
设置导航栏按钮.png

设置导航栏按钮在整个项目多处会用到,所以对其进行封装,
扩展UIBarButtonItem类,如下:

学习HM微博项目第1天_第16张图片
UIBarButtonItem+Extension.png

除了最先push进来的几个控制器外,要在所有push进来的子控制器设置导航栏按钮,可以在HMNavigationController类的pushViewController方法进行设置,如下:

学习HM微博项目第1天_第17张图片
在所有push进来的子控制器设置导航栏按钮.png

除了扩展UIBarButtonItem类设置导航栏按钮,还有另外一种做法,自定义按钮,如下:

学习HM微博项目第1天_第18张图片
自定义按钮设置导航栏按钮.png

这里的leftBtn.size的size用到了UIView类的扩展。

在HMMessageViewController.h中,重写viewDidLoad方法,设置导航栏按钮,如下:

学习HM微博项目第1天_第19张图片
设置写私信按钮.png

在HMNavigationController类中,重写类方法initialize,通过appearance对象修改整个项目中所有“UIBarButtonItem”的样式,如下:

学习HM微博项目第1天_第20张图片
所有“UIBarButtonItem”的样式.png

注:这里的UITextAttriTextColor、UITextAttriTextFont属性在iOS7.0之后已经不建议使用。

APP的界面:

学习HM微博项目第1天_第21张图片
首页导航栏的按钮.png
学习HM微博项目第1天_第22张图片
新push进来的子控制器导航栏的按钮.png
学习HM微博项目第1天_第23张图片
消息导航栏的私信按钮.png

你可能感兴趣的:(学习HM微博项目第1天)