回顾自己做过的项目,总结里面的知识点,分享自己参照WXHL的视频开发的一个模拟微博客户端的过程,为了还在IOS上找不到项目参考的朋友,这里会由一系列手把手的教程,如有不足,还希望可以抖抖小手,献上您宝贵的意见,交流交流经验!

注:本文适合已经学完OC基础和基本了解IOS大部分控件知识的读者阅读,如果还没有学习OC的UI控件的话,建议读者先花点时间去阅读教程

 

1)整体框架 

  如下图所示,这就是微博整个项目的框架结构图,其中DDMenuController是我们常用的能够左右滑动页面的开源类库,用法也很简单,待会儿会由介绍,一个控制器实现微博客户端的一个子功能(每个控制器还会有许许多多的子功能),有一个整体框架的认识,对后面的开发会带来很大的好处。 

2)项目构建

  下面简单介绍一下搭建所用的文件,需要加入两个CoreText.framework(处理一些文本),QuarzCore.framework(处理一些动画),

WXBaseModel基本的Model类,用于处理网络数据,还有一些开源类库DDMenu,RTLabel(处理字体,微博有点击@后面的字体,可以访问到用户的资料的界面,还有点击超链接,可以访问网络页面,这些都是通过RTLabel实现),还有就是SDWebImage类库,用来缓存网络的图片,UIUtils封装了常用的工具类,UIViewExt处理UI,还有剩下的WXHLGlobalUICommon,封装了一些常用的全局方法。

  然后再创建两个基类,BaseViewController(继承ViewController),BaseNavigationController(继承UIViewController),还有一个MainViewController(继承UITabBarController)。

  接下来我们就要初始化5个子控制器,先为每个模块创建一个文件夹,,分别对应首页,个人资料,消息,发现,更多。然后在每个文件夹里面分别创建子控制器继承(BaseViewController)HomeViewController,ProfileViewController,MessageViewController,DiscoverViewController.h,MoreViewController,

然后再MainViewController里面创建初始化方法

 //初始化控制器
-(void)_initViewController{ _home = [[HomeViewController alloc] init];
MessageViewController *message = [[[MessageViewController alloc] init] autorelease]; ProfileViewController *profile = [[[ProfileViewController alloc] init]autorelease ]; DiscoverViewController *discover = [[[DiscoverViewController alloc] init] autorelease];
MoreViewController *more = [[[MoreViewController alloc] init]autorelease]; NSArray *views = @[_home,message,profile,discover,more];
NSMutableArray *viewControllers = [[NSMutableArray alloc] initWithCapacity:];
for (UIViewController *viewController in views) { BaseNavigationController *nav = [[BaseNavigationController alloc] initWithRootViewController:viewController];
[viewControllers addObject:nav];
[nav release];
} self.viewControllers = viewControllers;
}

接着在viewDidLoad掉用这个方法

 - (void)viewDidLoad
{
[super viewDidLoad];
[self _initViewController]; }

最后在AppDelegate里面启动方法里面初始化MainViewContrller即可

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible]; //设置主题
[self setTheme]; MainViewController *mainController = [MainViewController alloc] init];
self.window.rootViewController = mainController; return YES;
}

IOS5.0之前是通过- (void)drawRect:(CGRect)rect方法设置导航栏的背景,之后是通过自带的方法设置的,查看一下代码,

- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;

所以最好在BaseNavigationController做一个版本控制,稍后在微博主题切换的时候会谈到,不用着急!

  

【iOS微博客户端开发】1、微博整体项目的构建的更多相关文章

  1. iOS仿微博客户端一条微博的布局

    前言 做一个微博客户端的第三方是自学的第一个实践的项目,自从从事iOS工作之后,就把这个项目给搁置了.趁现在过年回来有些空闲时间,再次修改(总觉得项目就是不停地修改).并且记录一点东西,以后可再回头看 ...

  2. IOS整体项目层级构建

    在创建IOS项目时,若有一个比较明确的层级架构,将对于今后代码的维护或者功能的扩展很有帮助:本文将通过一个实例来展现我对于层级的一些观点:里面有一些零碎的知识点可能无法全部介绍,到时提供源代码进行下载 ...

  3. [AIR] NativeExtension在IOS下的开发实例 --- Flex库项目的创建(二)

    来源:http://bbs.9ria.com/thread-102038-1-1.html 上一章,我已经介绍了如果创建IOS库文件,并定义了两个方法ShowIconBadageNumber和Init ...

  4. iOS开发实践:一个类微博客户端从启动到与用户交互的过程

    本文基于数据字典和数据流图两种工具讲述一个完整微博客户端的实现.数据字典和数据流图都可以用来表达线程的执行流程,同时定义了需要的类,是进一步设计类的基础. 数据字典实际上是一张表,表的第一个字段是程序 ...

  5. IOS中微博正文开发步骤总结

    微博正文开发步骤总结 1.新建正文控制器,在点击首页的某一条微博时跳转过去 2.在MainController中设置导航控制器的代理,监听所有导航控制器的跳转 1> 如果即将显示的不是根控制器 ...

  6. iOS界面流畅技巧之微博 Demo 性能优化技巧

    微博 Demo 性能优化技巧 我为了演示 YYKit 的功能,实现了微博和 Twitter 的 Demo,并为它们做了不少性能优化,下面就是优化时用到的一些技巧. 预排版 当获取到 API JSON ...

  7. iOS 新浪微博-5.0 首页微博列表

    首页显示微博列表,是微博的核心部分,这一章节,我们主要是显示出微博的列表. 导入第三方类库 pod 'SDWebImage', '~> 3.7.3' pod 'MJRefresh', '~> ...

  8. 64位ubuntu下安装微博客户端的方法

    最近安装了12.04的ubuntu系统,在unbutu提供的软件中心找不到微博客户端的应用,但在新浪的http://sinatair.sinaapp.com/下找到了官方的客户端. 于是下载了linu ...

  9. android oauth 微博客户端 架构一

    最近研究oauth协议,为了进一步 的巩固自己的学习成果,顾完成了android的新浪客户端.他的架构如下: UI层微博中的各个窗体  就是所谓的各个activitylogic层程序的核心控制调度模块 ...

随机推荐

  1. Python基础(8)迭代器、生成器

    一 什么是迭代 1 重复 2 下一次重复是基于上一次的结果 # while True: # cmd=input('>>: ') # print(cmd) # l=['a','b','c', ...

  2. Quartus ModelSim联合仿真中的RAM初始化

    Modelsim只支持Hex格式的初始化文件,文件需要放在仿真的根目录下,例如:.\simulation\modelsim:并且在利用Quartus宏生成IP时,选择的初始化文件必须用绝对路径!否则M ...

  3. [bzoj1798][Ahoi2009]Seq——线段树+多重标记下传

    题意 请你写一个数据结构,支持: 子序列同加 子序列同乘 统计子序列和 题目 线段树裸题,但对于我这种初学者还是非常难写. 我们维护两个标记,一个是在这个节点上作过的所有乘法操作,一个是加法操作,始终 ...

  4. BZOJ1037 DP

    2013-11-15 21:51 原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1037 拿到这道题想到了DP,后来发现三维无法确定的表示状 ...

  5. 【IDEA】设置类头注释和方法注释

    idea和eclipse的注释还是有一些差别的. 类头注释: 打开file->setting->Editor->Filr and Code Templates->Include ...

  6. linux基础 -nginx和nfs代理 开发脚本自动部署及监控

    开发脚本自动部署及监控 1.编写脚本自动部署反向代理.web.nfs: (1).部署nginx反向代理三个web服务,调度算法使用加权轮询:  (2).所有web服务使用共享存储nfs,保证所有web ...

  7. 网络基础(osi、协议)

    *互联网协议 人和人沟通需要一套共同的标准,英语就是普遍的一种,计算机如果需要进行联网互通,也需要一种统一的标准,如果所有的计算机都遵守这种标准,就会实现网络的互联. 1.一系列统一的标准,这些标准称 ...

  8. SpringMvc基础知识(一)

    目录: springmvc框架原理(掌握) 前端控制器.处理器映射器.处理器适配器.视图解析器 springmvc入门程序 目的:对前端控制器.处理器映射器.处理器适配器.视图解析器学习 非注解的处理 ...

  9. twilio打电话和发短信

    # -*- coding: utf-8 -*- # @Time : 2018/03/09 14:53 # @Author : cxa # @File : call.py # @Software: Py ...

  10. [ MongoDB ] 分片集群及测试

    分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量. ...