1>创建程序载入界面

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

//1>创建窗口

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

//2>设置窗口的根控制器

UITabBarController *tabBarController = [[UITabBarController alloc] init];

self.window.rootViewController = tabBarController;

//3>显示窗口

[self.window makeKeyAndVisible];

return YES;

}

2>LaunchImage配置

LaunchImage.launchimage文件下的Contents.json文件中记录了LaunchImage的详细配置:

3>取消APP图标渲染

4>程序加载时隐藏状态栏

在程序加载完成后如需恢复状态栏显示,可以在didFinishLaunchingWithOptions方法中调用[application setStatusBarHidden:NO]方法;

5>添加TabBar控制器及其子控制器

自定义一个TabBarViewController类继承UITabBarController类用来创建自定义的TabBarView,并在该类中的viewDidLoad方法中创建子控制器

- (void)viewDidLoad

{

[super viewDidLoad];

//添加子控制器

UIViewController *home = [[UIViewController alloc] init];

home.view.backgroundColor = [UIColor redColor];

home.tabBarItem.title = @"首页";

home.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"];

[home.tabBarItemsetSelectedImage:[UIImage imageNamed:@"tabbar_home_selected"]];

[self addChildViewController:home];

UIViewController *message = [[UIViewControlleralloc] init];

message.view.backgroundColor = [UIColor orangeColor];

message.tabBarItem.title = @"消息";

message.tabBarItem.image = [UIImage imageNamed:@"tabbar_message_center"];

[message.tabBarItem setSelectedImage:[UIImage imageNamed:@"tabbar_message_center_selected"]];

[self addChildViewController:message];

UIViewController *discover = [[UIViewControlleralloc] init];

discover.view.backgroundColor = [UIColor greenColor];

discover.tabBarItem.title = @"发现";

discover.tabBarItem.image = [UIImage imageNamed:@"tabbar_discover"];

[discover.tabBarItem setSelectedImage:[UIImage imageNamed:@"tabbar_discover_selected"]];

[self addChildViewController:discover];

UIViewController *profile = [[UIViewController alloc] init];

profile.view.backgroundColor = [UIColor blueColor];

profile.tabBarItem.title = @"我";

profile.tabBarItem.image = [UIImage imageNamed:@"tabbar_profile"];

[profile.tabBarItem setSelectedImage:[UIImage imageNamed:@"tabbar_profile_selected"]];

[self addChildViewController:profile];

}

6>渲染图片

在iOS7中,会对selectedImage的图片再次渲染为蓝色,要想显示原图,就必须要取消渲染;

取消渲染调用的方法:

selectedImage = [selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

7>优化添加子控制器代码

将添加子控制器到TabBarViewController的代码进行优化,建立如下方法:

- (void)addOneChildViewController:(UIViewController *)viewController withTitle:(NSString *)title imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName

{

viewController.view.backgroundColor = ZFRandomColor;

viewController.tabBarItem.title = title;

viewController.tabBarItem.image = [UIImage imageNamed:imageName];

UIImage *image = [UIImage imageNamed:selectedImageName];

if (iOS7) {

image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

}

[viewController.tabBarItem setSelectedImage:image];

[self addChildViewController:viewController];

}

其中ZFRandomColor和iOS7为自定义宏,其宏定义在Prefix.pch文件下:

#ifdef __OBJC__

#import <UIKit/UIKit.h>

#import <Foundation/Foundation.h>

#import <CoreData/CoreData.h>

#define ZFRandomColor [UIColor colorWithRed:arc4random_uniform()/)/)/255.0 alpha:1.0]

#define iOS7 [[UIDevice currentDevice].systemVersion doubleValue] >= 7.0

#endif

由于imageWithRenderingMode方法只在iOS7环境下有效,因此此处代码需要添加条件判断语句进行系统适配,通过获取当前运行环境的系统版本来判断是否编译此方法;

8>图片适配

为UIImage添加一个分类,用于image的系统适配:

@implementation UIImage (Extension)

+ (UIImage *)imageWithName:(NSString *)imageName

{

  UIImage *image = nil;

  if (iOS7) {

  NSString *name = [imageName stringByAppendingString:@"_os7"];

image = [UIImage imageNamed:name];

}

if (!image) {

image = [UIImage imageNamed:imageName];

}

return image;

}

@end

iOS开发-微博客户端-基本界面搭建(01)的更多相关文章

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

    iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)   前面我们介绍了StoryBoard这个新技术,和纯技术 ...

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

    iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)   这里我们就直接上实例: 一:新建一个项目singleV ...

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

      环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)   研究了这么就IOS开发,都没有所处一个像样或者自己忙一点的项目.最近自 ...

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

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

  5. 【转】IOS开发:[1]Xcode5界面入门

    ios开发离不开xcode,这篇以xcode5界面来介绍一下xcode的界面都有哪些内容. 工具/原料 xcode5 整体来看区域有哪些? 1 首先我们先整体来看一下,xcode5界面可以分为五大主要 ...

  6. iOS 简单音乐播放器 界面搭建

    如图搭建一个音乐播放器界面,具备以下几个简单功能: 1,界面协调,整洁. 2,点击播放,控制进度条. 3.三收藏歌曲,点击收藏,心形收藏标志颜色加深. 4,左右按钮,切换歌曲图片和标题. 5,点击中间 ...

  7. 新手介绍简单一下iOS开发中几种界面传值

    首先在处理iOS-UI中,也许在很多地方需要用到两种甚至多种不同界面之间的传值,相比这也是很多iOS入门成员头疼问题,同样作为新手的我在接触这类传值时候也一脸懵然,经过一段时间的研究,对于简单的传值有 ...

  8. iOS开发 — (UINaVigationController)导航控制器,界面传值

    UINavigationController 继承于 UIViewController , 以栈的方式管理所 控制的视图控制器 . 至少要有一个被管理的视图控制器 ,这个控制器我们称作导航控制器的根视 ...

  9. Ios 开发 mac cocoaPods的环境搭建

    CocoaPods不多介绍,一个大家几乎都会使用的第三方库的管理框架! 本文主要介绍如何安装和使用CocoaPods,本人亲测可行. 1.Ruby环境搭建 查看下当前ruby版本: ruby -v 更 ...

随机推荐

  1. C#简单文件下载-3行代码

    使用WebClient string url = "http://www.mozilla.org/images/feature-back-cnet.png"; WebClient ...

  2. MVC 5 + EF6 入门完整教程14 -- 动态生成面包屑导航

    上篇文章我们完成了 动态生成多级菜单 这个实用组件. 本篇文章我们要开发另一个实用组件:面包屑导航. 面包屑导航(BreadcrumbNavigation)这个概念来自童话故事"汉赛尔和格莱 ...

  3. 【jQuery基础学习】09 jQuery与前端(这章很水)

    这章主要是将如何将jQuery应用到网站中,或者说其实就是一些前端知识,对于我这种后端程序来说其实还是蛮有用的. 关于网站结构 文件结构 前端文件分三个文件夹放 images文件夹用来存放将要用到的图 ...

  4. 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出

    [源码下载] 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 预处理命令 输入 ...

  5. ViewPager和Fragment的组合使用

    如图是效果图用的是Viewpager和fragment来实现的主界面 不过其中的预加载我没有解决 如下是代码代码比较简单 package com.ithello.dingding; import ja ...

  6. windows下react-native环境搭建

    首先不得不先吐槽一下自己,一个坑总是踩很多次,且乐此不疲. 咋办? 写博客记录记录呗. 零.记录的点 Java环境的下载与配置 Android环境的下载与配置 Node环境的下载与配置 创建第一个re ...

  7. PHP学习笔记:使用session来存储用户的登录信息

    session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等. 用户在登录成功以后,通常可以将用户的信息存储在session中,一般 ...

  8. OS X 在Cisco无线环境下丢包分析 part 2

    part 1说到,单播的ARP请求最终都被网关丢弃了,从而造成了丢包.先说我最终怎么解决的吧,我最终把核心交换上针对无线VLAN的arp inspection和dhcp snooping删掉了,然后出 ...

  9. Android使用默认样式创建View的几个姿势

    以下内容是分析安卓源码所得: 1: 使用默认样式创建View的方式, 源码文件 Button.Java  注:此文参考http://www.linzenews.com/ 中的内容所写,如侵删! 2: ...

  10. CSS布局——横向两列布局

    1.固定两栏布局,使用float,注意对紧邻元素清除浮动影响.IE6在使用float布局同时设置横行margin的情况下会有双边距BUG,解决方案是加入_display:inline 代码如下: &l ...