您的位置:首页 > 移动开发 > IOS开发

iOS开发 - 第05篇 - 项目 - 05 - 首页

2016-08-10 13:29 435 查看

1、下拉刷新

1.1 进入首页自动刷新



1.2 显示最新微博数量



注:弹出的UILabel应该添加到导航控制器的View上,而不应该添加到tableView上,否则会更随tableView一起滚动!!!

在发送请求成功后,调用下面方法(注意动画):



2、添加上拉刷新控件

1> 自定义HWLoadMoreFooter(XIB)

1. UILabel利用autoLayout填充View

2.添加转圈控件,勾选动画



2>提供类方法加载XIB控件



3> 添加到tableView的tableFooterView上

注:为防止一开始进入来不及显示tableView数据,需要先将tableFooterView隐藏,否则会直接显示!!!



4> 代理监听scrollView滚动,等待滚动到最后的时候显示tableFooterView然后再自动刷新

注:scrollView属性详解 ---重要





注:contentSize才是滚动区域,需要等待最后一个Cell完全显示的时候,才去显示footerView!!!





3、微博未读数

采用定时器每隔60s获取微博未读数。

注1:设置self.tabBarItem.badgeValue

注2:下拉刷新成功后,清空self.tabBarItem.badgeValue

注3:NSTimer定时器,若主线程正在处理其他事件,如一直在滚动,则定时器是不会启动的,应告诉主线程,分一点时间给定时器,即修改mainRunLoop中定时器的模式

注4:拿到未读数后也应该在APP图标上设置相应数字





注5:上述方法完成后,还有一个问题,一旦APP进入后台,则定时器无法工作,也就无法获取微博未读数,显示在APP图标上,需要再程序进入后台的时候,开启后台任务

6:下面开启后台任务的时间仍然是不确定的,还要取决于操作系统CPU、内存等的占有率,也有可能会被系统杀死。

7:若要获取更多的时间,最好告诉操作系统APP进入后台需要有后台任务,在Info.plst中设置后台模式:Required
background modes ==App plays audio or streams audio/video using AirPlay
,但是这样仍然是不确定到底能在后台运行多久





4、调节HWTitleButton文字图片间距

在上一篇5.2节自定义HWTitleButton中,文字和图片连在一起



5、cell结构分析









6、自定义cell步骤 --- 重要

注:每个cell的高度不一样,每个cell里面显示的内容也不一样

1> 新建一个继承自UITableViewCell的子类

2> 在initWithStyle:方法中进行子控件的初始化

1. 将有可能显示的所有子控件都添加到contentView中

2. 顺便设置子控件的一些属性(一次性的设置:字体、文字颜色、背景)

3> 提供2个模型

1. 一个是数据模型(文字数据 + 图片数据)

2. 一个是frame模型(数据模型 + 所有子控件的frame+ cell的高度)

4> cell应该提供一个frame模型属性

1. 将frame模型传递给cell

2. cell根据frame模型给子控件设置frame,根据数据模型给子控件设置数据

3. cell根据数据模型决定显示和隐藏哪些子控件

5> 在tableView的代理方法返回cell的高度

7、自定义cell

7.1 自定义HWStatusCell,初始化控件





注:在cell中应该根据HWStatusFrame模型(既包含HWStatus模型、又包含每个控件的frame)来配置cell!!!





注:UILabel中的字体应和后面计算frame时候的字体保持一致!!!

7.2 自定义HWStatusFrame模型



7.3 设置cell的数据和每个控件frame

HWStatusCell 添加-(void)setStatusFrame:(HWStatusFrame *)statusFrame





7.4 计算cell中控件的frame

HWStatusFrame添加-(void)setStatus:(HWStatus *)status

注:为达到写一个控件frame出现一个frame的效果,供测试,可以先写好外面代码(tableView的代理方法)



注:正文frame的计算!!!



7.5 修改HWHomeViewController中代码

1> 将原先的HWStatus数组改成HWStatusFrame数组

2>将新浪返回的HWStatus数组改成HWStatusFrame数组





3> 在需要修改HWStatusFrame的地方进行相应修改

4> 添加tableView:heightForRowAtIndexPath:代理方法



7.5 HWUser和HWStatus添加需要的属性



注 :重写setMbtype方法判断是否是会员



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息