新浪微博-开发过程

10月26号

一、环境搭建
1.屏幕方向改为仅支持正常的竖屏
2.启动程序时隐藏状态栏
3.修改软件名称
4.去除图标玻璃质感效果

二、判断用户是否第一次使用这个版本
1.将沙盒中的版本号和info.plist中的版本号进行比较
2.第一次使用:显示版本新特性界面
3.非第一次使用:显示主界面(显示状态栏)

三、版本新特性界面
1.自定义控制器的view-UIImageView
2.添加UIScrollView和内部的图片
3.添加UIPageControl
4.添加UIScrollView最后一个界面的分享和开始按钮
5.全屏图片屏幕适配
* .png
* @2x.png
* -568h@2x.png

10月27号

一、主界面
1.设计Dock类
* 底部的选项条
* 用来存放多个选项卡标签

2.让Dock提供一个添加标签(Item)的方法
* 比如方法:
// icon是标签的图标
// title是标签的文字
- (void)addItemWithIcon:(NSString *)icon title:(NSString *)title;
* 根据icon和title创建item
* 添加item
* 监听item点击
* 按照添加顺序调整所有的item的frame

3.设计DockItem类
* 代表一个选项卡标签
* 继承自UIButton
* 实现相应方法来调整内部图片和文字的位置

4.抽取NSString的分类,用来往文件名后面拼接字符串

5.为Dock添加代理
* 代理的作用是监听Dock上DockItem(选项卡\标签)的点击

6.初始化子控制器
* 如果子控制器需要导航条,就包装一个UINavigationController
* 点击标签的时候切换对应的子控制器
* 移除旧子控制器的view,添加新子控制器的view

7.设置导航主题
* 目的是保证整个项目中所有导航栏和按钮的样式一致
* 自定义一个导航控制器,在里面设置导航栏和导航按钮的主题
* 使用导航控制器

8.给UIBarButtonItem抽取一个分类
* 快速创建一个显示2张不同图片的UIBarButtonItem

9.Dock的抽取和封装
* Dock
* DockItem
* DockController

10月29号

一、更多
1.加载More.plist,读取表格信息

2.给每一行Cell设置对应的背景图片(backgroundView和selectedBackgroundView)
1> 如果一组只有一行,就设置4个圆角的背景图片
2> 如果一组有多行
* 首行:设置上面有2个圆角的背景图片
* 末行:设置下面有2个圆角的背景图片
* 中间行:设置没有圆角的背景图片

3.添加底部的“退出当前账号”红色按钮(tableViewFooterView)

4.设置每个Cell右边的箭头或者文字(accessoryView)

5.设置每一组头部和尾部的高度(sectionHeaderHeight和sectionFooterHeight)

6.封装cell
1> 目的:将设置cell内部属性的代码封装到cell中,比如背景图片、右边的view
2> 需要提供的接口
* 设置所在的tableView
* 设置行号(indexPath)
* 设置cell的类型(右边显示什么东西)

10月30号

一、授权页面
1.用webView加载登录页面

2.在webView的代理方法中拦截所有请求

3.拦截到回调地址的请求
* 返回NO,不让它跳转
* 截取code=后面的请求标记(Request Token)

4.利用Request Token发送post请求换取accessToken

5.增加MBProgressHUD指示器

6.编写一个HttpTool封装get\post请求

7.编写一个AccountTool存储账号信息

二、主页面
1.发送请求获取微博数据,展示微博内容和用户名

2.封装模型Status、User

3.封装一个StatusTool,专门用来管理微博数据

 11月1号

一、主页面(第一个版本)
1.添加SDWebImage框架,下载用户头像

2.根据微博内容和用户昵称算出Cell的高度

二、主页面(第二个版本)
1.自定义一个StatusCell,添加可能出现的所有子控件

2.设计一个StatusCellFrame对象,专门用来存储每一个Cell内部所有子控件的frame

3.在tableView代理方法中创建StatusCellFrame,返回cell的高度

4.在tableView数据源方法中创建StatusCell,设置cell对应的StatusCellFrame

5.在设置cell的StatusCellFrame时,设置每个子控件的frame和数据

10月2号

一、主页面
1.自定义Cell的代码优化
* 在获得最新微博的时候计算Frame,然后再reloadData
* 在tableView:heightForRowAtIndexPath:方法中返回StatusCellFrame算好的cell高度
* 在tableView:cellForRowAtIndexPath:方法中新建自定义cell,给Cell传递对应的StatusCellFrame对象

2.头像
* 封装一个IconView,存放用户头像图片和认证图标
* 提供接口让别人传递(User)用户和(IconType)头像类型数据

3.昵称
* 根据是不是会员来决定昵称的颜色、决定会员图标是否需要显示

4.时间
* 解析新浪返回的字符串为更合理的字符串

5.来源
* 截取来源中间的有用字符串

6.转发
* 背景图片
* 昵称加上@

7.配图
* 以九宫格形式展示图片

 10月4号

一、主页面
1.底部Dock
1> 封装一个Dock类
2> 添加内部的3个按钮和分隔线、设置背景图片、设置自动伸缩属性
3> 重写setFrame方法,目的是限制Dock的宽高
4> 在Cell中添加Dock,并且设置y值
5> 拿到微博数据,设置操作条按钮的数值

2.添加下拉刷新功能

3.添加上拉加载更多功能

10月5号

一、微博正文
1.新建正文控制器,在点击首页的某一条微博时跳转过去
2.在MainController中设置导航控制器的代理,监听所有导航控制器的跳转
1> 如果即将显示的不是根控制器
* 将导航控制器view的高度拉长为屏幕的高度(不包括状态栏高度)
* 添加Dock到跟控制器(目的是在切换控制器时,Dock能随着根控制器一起移动。注意设置Dock的y值,当根控制器view是UIScrollView时,要加上contentOffset的y值。)
* 给即将显示的控制器添加左上角的返回按钮

2> 如果显示完毕的是根控制器
* 将导航控制器view的高度还原为默认高度(屏幕高度 - Dock高度)
* 将Dock添加到MainController的view上

3.Dock应该提供一个方法返回当前选中标签的索引

4.tableView处理步骤
#pragma mark 1.有多少组
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
* 返回2

#pragma mark 2.第section组头部控件有多高
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
* section == 0  返回0
* section == 1  返回标题栏的高度(44#pragma mark 3.第section组有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
* section == 0  返回1
* section == 1
* 如果当前是转发,返回转发的数量
* 如果当前是评论,返回评论的数量

#pragma mark 4.indexPath这行的cell有多高
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
* section == 0  返回微博cell的高度
* section == 1
* 如果当前是转发,返回转发cell的高度
* 如果当前是评论,返回评论cell的高度

#pragma mark 5.indexPath这行的cell长什么样子
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
* section == 0 返回微博cell
* section == 1
* 如果当前是转发,返回转发cell
* 如果当前是评论,返回评论cell

#pragma mark 6.第section组头部显示什么控件
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
* section == 0  返回nil
* section == 1 返回标题栏控件

5.抽取Cell和Frame的公共父类

6.创建tableView第1组的头部控件

7.展示被转发的微博

 

posted @ 2013-11-01 10:57  needly  阅读(525)  评论(0编辑  收藏  举报