• 【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做一个版本控制,稍后在微博主题切换的时候会谈到,不用着急!

     

      

  • 相关阅读:
    让所有IE支持HTML5的解决方案
    分享按钮源码
    jQuery引用
    字体 ttf 下载
    重写 gallery 防止滚过头
    view 隐藏 显示
    android 数据存储几个方式
    TextView 内容居中
    eclipse导入基类方法
    imageview 全屏 拖动
  • 原文地址:https://www.cnblogs.com/iOS-dd/p/3394035.html
Copyright © 2020-2023  润新知