zoukankan      html  css  js  c++  java
  • 【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里面创建初始化方法

     1 //初始化控制器
     2 -(void)_initViewController{
     3 
     4     _home = [[HomeViewController alloc] init];
     5     MessageViewController *message = [[[MessageViewController alloc] init] autorelease];
     6     
     7     ProfileViewController *profile = [[[ProfileViewController alloc] init]autorelease ];
     8     
     9     DiscoverViewController *discover = [[[DiscoverViewController alloc] init] autorelease];
    10     MoreViewController *more = [[[MoreViewController alloc] init]autorelease];
    11     
    12     NSArray *views = @[_home,message,profile,discover,more];
    13     NSMutableArray *viewControllers = [[NSMutableArray alloc] initWithCapacity:5];
    14     for (UIViewController *viewController in views) {
    15   
    16         BaseNavigationController *nav = [[BaseNavigationController alloc] initWithRootViewController:viewController];
    17         [viewControllers addObject:nav];
    18         [nav release];
    19     }
    20     
    21     self.viewControllers = viewControllers;
    22 }

    接着在viewDidLoad掉用这个方法

    1 - (void)viewDidLoad
    2 {
    3     [super viewDidLoad];
    4     [self _initViewController];
    5    
    6 }

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

     1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
     2 {
     3     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
     4     self.window.backgroundColor = [UIColor whiteColor];
     5     [self.window makeKeyAndVisible];
     6     
     7     //设置主题
     8     [self setTheme];
     9     
    10     MainViewController *mainController = [MainViewController alloc] init];
    11     self.window.rootViewController = mainController;
    12     
    13     
    14     return YES;
    15 }

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

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

     

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

     

      

  • 相关阅读:
    跃迁方法论 Continuous practice
    EPI online zoom session 面试算法基础知识直播分享
    台州 OJ 2648 小希的迷宫
    洛谷 P1074 靶形数独
    洛谷 P1433 DP 状态压缩
    台州 OJ FatMouse and Cheese 深搜 记忆化搜索
    台州 OJ 2676 Tree of Tree 树状 DP
    台州 OJ 2537 Charlie's Change 多重背包 二进制优化 路径记录
    台州 OJ 2378 Tug of War
    台州 OJ 2850 Key Task BFS
  • 原文地址:https://www.cnblogs.com/iOS-dd/p/3394035.html
Copyright © 2011-2022 走看看