【iOS微博客户端开发】1、微博整体项目的构建
回顾自己做过的项目,总结里面的知识点,分享自己参照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、微博整体项目的构建的更多相关文章
- iOS仿微博客户端一条微博的布局
前言 做一个微博客户端的第三方是自学的第一个实践的项目,自从从事iOS工作之后,就把这个项目给搁置了.趁现在过年回来有些空闲时间,再次修改(总觉得项目就是不停地修改).并且记录一点东西,以后可再回头看 ...
- IOS整体项目层级构建
在创建IOS项目时,若有一个比较明确的层级架构,将对于今后代码的维护或者功能的扩展很有帮助:本文将通过一个实例来展现我对于层级的一些观点:里面有一些零碎的知识点可能无法全部介绍,到时提供源代码进行下载 ...
- [AIR] NativeExtension在IOS下的开发实例 --- Flex库项目的创建(二)
来源:http://bbs.9ria.com/thread-102038-1-1.html 上一章,我已经介绍了如果创建IOS库文件,并定义了两个方法ShowIconBadageNumber和Init ...
- iOS开发实践:一个类微博客户端从启动到与用户交互的过程
本文基于数据字典和数据流图两种工具讲述一个完整微博客户端的实现.数据字典和数据流图都可以用来表达线程的执行流程,同时定义了需要的类,是进一步设计类的基础. 数据字典实际上是一张表,表的第一个字段是程序 ...
- IOS中微博正文开发步骤总结
微博正文开发步骤总结 1.新建正文控制器,在点击首页的某一条微博时跳转过去 2.在MainController中设置导航控制器的代理,监听所有导航控制器的跳转 1> 如果即将显示的不是根控制器 ...
- iOS界面流畅技巧之微博 Demo 性能优化技巧
微博 Demo 性能优化技巧 我为了演示 YYKit 的功能,实现了微博和 Twitter 的 Demo,并为它们做了不少性能优化,下面就是优化时用到的一些技巧. 预排版 当获取到 API JSON ...
- iOS 新浪微博-5.0 首页微博列表
首页显示微博列表,是微博的核心部分,这一章节,我们主要是显示出微博的列表. 导入第三方类库 pod 'SDWebImage', '~> 3.7.3' pod 'MJRefresh', '~> ...
- 64位ubuntu下安装微博客户端的方法
最近安装了12.04的ubuntu系统,在unbutu提供的软件中心找不到微博客户端的应用,但在新浪的http://sinatair.sinaapp.com/下找到了官方的客户端. 于是下载了linu ...
- android oauth 微博客户端 架构一
最近研究oauth协议,为了进一步 的巩固自己的学习成果,顾完成了android的新浪客户端.他的架构如下: UI层微博中的各个窗体 就是所谓的各个activitylogic层程序的核心控制调度模块 ...
随机推荐
- HDU2546饭卡---(DP 经典背包)
http://acm.hdu.edu.cn/showproblem.php?pid=2546 饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory L ...
- COGS2642 / Bzoj4590 [Shoi2015]自动刷题机
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 906 Solved: 321 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了 ...
- 地震(quake)
地震 题目描述 一场地震毁了 Farmer John 的整个农场.他是个有恒心的人,决定重建农场.在重建了所有 n(1<=n<=400)块田野后,他意识到还得修路将它们连起来.完工后,任两 ...
- C++ 头文件保护符
头文件保护符有什么作用? 在C++中我们写头文件时经常需要#include来包含其他头文件.头文件定义的实体经常使用其他头文件的内容,有时候会出现一个头文件被多次包含进同一源文件. 例如:一个头文件中 ...
- 【IDEA】设置类头注释和方法注释
idea和eclipse的注释还是有一些差别的. 类头注释: 打开file->setting->Editor->Filr and Code Templates->Include ...
- Execute a terminal command from a Cocoa app
http://stackoverflow.com/questions/412562/execute-a-terminal-command-from-a-cocoa-app in the spirit ...
- Backbone Model 源码简谈 (版本:1.1.0 基础部分完毕)
Model工厂 作为model的主要函数,其实只有12行,特别的简练 var Model = Backbone.Model = function(attributes, options) { va ...
- 非旋转Treap——普通平衡树
扔板跑…… #include<bits/stdc++.h> #define N 100010 #define mp make_pair using namespace std; typed ...
- ThinkPHP的静态化页面方法
原来ThinkPHP自带了生成静态页的函数buildHtml,使用起来很方便!最新的手册里没写这个方法,向大家介绍一下. protected function buildHtml($htmlf ...
- 【转】Celery 分布式任务队列快速入门
Celery 分布式任务队列快速入门 本节内容 Celery介绍和基本使用 在项目中如何使用celery 启用多个workers Celery 分布式 Celery 定时任务 与django结合 通过 ...