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

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方法判断是否是会员

时间: 2024-08-28 10:10:54

iOS开发 - 第05篇 - 项目 - 05 - 首页的相关文章

iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)

iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController) 前面我们介绍了StoryBoard这个新技术,和纯技术编程的代码创建界面,本篇我们将介绍一个老的技术,但是在很多的公司或者库里面还是使用这个技术,既然如此它肯定有他的好处,至于好处这里我就不一一介绍了.在Xcode5之前是只能使用Xib或者代码的,而代码又对于很多初学者来说算是一个难题.毕竟不知道怎么下手.所以我就总结了一下这段时间自己编写程序的一个实例来说明怎么

iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)

iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController) 这里我们就直接上实例: 一:新建一个项目singleView Controller,命名未iCocos 二:由于我们使用的纯代码实现的,所以删除其中的StoryBoard和Viewtroller的两个文件 三:新建一个继承自TabBar Controller的类,我们命名问iCocos ViewController 三:在Appdelegate的实现文件中导入刚刚

IOS开发数据存储篇—IOS中的几种数据存储方式

IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09  421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都保存在APP所在的沙盒之中.一般有以下几种: 1.PList(XML属性列表) 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦 //写入文件 NSString *doc = [NSSearchPathForDirectoriesInDomains(

在iOS开发中,给项目添加新的.framework

首先需要了解一下iOS中静态库和动态库.framework的概念 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件.另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间. 上面提到

【iOS开发】在ARC项目中使用非ARC文件

ARC的出现应该说是开发者的一大福利,苹果是推荐使用的,但是因为之前没有ARC机制,好多比较好的类库都是使用的非ARC,或是有些大牛还是不喜欢用ARC,封装的类也是非ARC的,想要在自己的ARC项目中使用这些非ARC类库,只需要简单的设置一下就可以了. 在TARGETS-Bulid Phares-Compile Sources中找到非ARC的文件,双击,在弹出的框中添加 -fno-objc-arc 如图: 即可 PS:如果项目建立时未使用ARC,想将其改为ARC,可以在building sett

学习IOS开发网络多线程篇--NSThread/GCD/

NSThread:利用NSThread创建和启用一个线程 1. NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];,调用后调用[thread start]; 2. 创建线程后自动启动线程 ,[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil]; 3. 隐式创建

iOS开发 - 第05篇 - 项目 - 12 - 图文混排

1.首页微博文字处理 对于之前微博项目中首页:微博文字中的用户名.话题.链接等文字需要高亮显示,表情字符串需要显示对应表情. 思路: 1>之前微博中的文字使用NSString,要达到不同文字的高亮显示,需要使用NSAttributedString 2>微博模型中增加一个属性,代表属性字符串 /** string     微博信息内容*/ @property(nonatomic, copy) NSString *text; /** string     微博信息内容 -- 带有属性的(特殊文字会

iOS开发——淫技篇&iOS开发中各种淫技总结(五)

淫技篇&iOS开发中各种淫技总结(五) ARC的使用: ARC并不能避免所有的内存泄露.使用ARC之后,工程中可能还会有内存泄露,不过引起这些内存泄露的主要原因是:block,retain循环,对CoreFoundation对象(通常是C结构)管理不善,以及真的是代码没写好. reuseIdentifier 在iOS程序开发中一个普遍性的错误就是没有正确的为UITableViewCells.UICollectionViewCells和UITableViewHeaderFooterViews设置r

iOS开发笔记 - 网络篇

计算机网络基础 ??计算机网络是多台独立自主的计算机互联而成的系统的总称,最初建立计算机网络的目的是实现信息传递和资源共享. ??如果说计算机是第二次世界大战的产物,那么计算机网络则是美苏冷战的产物.20世纪60年代初期,美国国防部领导的ARPA提出研究一种崭新的.能够适应现代战争的.生存性很强的通信系统并藉此来应对苏联核攻击的威胁,这个决定促使了分组交换网的诞生,也奠定今天计算机网络的原型,这是计算机网络发展史上第一个里程碑式的事件. ??第二个里程碑式的事件是20世纪80年代初,国际标准化组