iOS开发-微博客户端-基本界面搭建(01)
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)的更多相关文章
- iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)
iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController) 前面我们介绍了StoryBoard这个新技术,和纯技术 ...
- iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)
iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController) 这里我们就直接上实例: 一:新建一个项目singleV ...
- iOS开发——实战OC篇&环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)
环境搭建之StoryBoard(玩转UINavigationController与UITabBarController) 研究了这么就IOS开发,都没有所处一个像样或者自己忙一点的项目.最近自 ...
- iOS仿微博客户端一条微博的布局
前言 做一个微博客户端的第三方是自学的第一个实践的项目,自从从事iOS工作之后,就把这个项目给搁置了.趁现在过年回来有些空闲时间,再次修改(总觉得项目就是不停地修改).并且记录一点东西,以后可再回头看 ...
- 【转】IOS开发:[1]Xcode5界面入门
ios开发离不开xcode,这篇以xcode5界面来介绍一下xcode的界面都有哪些内容. 工具/原料 xcode5 整体来看区域有哪些? 1 首先我们先整体来看一下,xcode5界面可以分为五大主要 ...
- iOS 简单音乐播放器 界面搭建
如图搭建一个音乐播放器界面,具备以下几个简单功能: 1,界面协调,整洁. 2,点击播放,控制进度条. 3.三收藏歌曲,点击收藏,心形收藏标志颜色加深. 4,左右按钮,切换歌曲图片和标题. 5,点击中间 ...
- 新手介绍简单一下iOS开发中几种界面传值
首先在处理iOS-UI中,也许在很多地方需要用到两种甚至多种不同界面之间的传值,相比这也是很多iOS入门成员头疼问题,同样作为新手的我在接触这类传值时候也一脸懵然,经过一段时间的研究,对于简单的传值有 ...
- iOS开发 — (UINaVigationController)导航控制器,界面传值
UINavigationController 继承于 UIViewController , 以栈的方式管理所 控制的视图控制器 . 至少要有一个被管理的视图控制器 ,这个控制器我们称作导航控制器的根视 ...
- Ios 开发 mac cocoaPods的环境搭建
CocoaPods不多介绍,一个大家几乎都会使用的第三方库的管理框架! 本文主要介绍如何安装和使用CocoaPods,本人亲测可行. 1.Ruby环境搭建 查看下当前ruby版本: ruby -v 更 ...
随机推荐
- C语言字符串匹配函数
C语言字符串匹配函数,保存有需要时可以用: #include <stdio.h> #include <stdlib.h> #include <string.h> # ...
- .NET中Debug模式与Release模式
Visual Studio 项目对程序的发布和调试版本分别有单独的配置.顾名思义,生成调试版本的目的是用于调试,而生成发布版本的目的是用于版本的最终分发. 如果在 Visual Studio 中创建程 ...
- activiti 工作流
1. 工作流的概念 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实 ...
- PHP学习笔记:使用session来存储用户的登录信息
session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等. 用户在登录成功以后,通常可以将用户的信息存储在session中,一般 ...
- vmware linux top si高以及网卡队列、软负载相关优化
今日,测试公司自行开发的一rpc中间件,期间发现top si的比例很高,且几乎只有一个cpu是繁忙的,其他均基本为0. 经查,si主要是系统软中断,最后确定是网卡导致的系统中断.于是,往上搜了下资料, ...
- 总结一下SQL的全局变量
SQL Server 2008中的全局变量及其用法 T-SQL程序中的变量分为全局变量和局部变量两类,全局变量是由SQL Server系统定义和使用的变量.DBA和用户可以使用全局变量的值,但不能自己 ...
- jQuery pgwslideshow 空间相册
一个响应式相册插件,你可以自定义幻灯片最大高度,滑动效果,是否显示控制按钮,自动轮播或间隔时间. pgwslideshow相册插件有以下特点 支持响应式 支持桌面和移动设备 代码简单 ...
- 导入myeclipse项目出现的问题及解决方案
1.myeclipse 方法上加上@Override就报错 在有@Override方法上面会报错如下: The method oncreate(Bundle) of type HelloWorld m ...
- Lync 客户端:无法登陆到Lync,验证服务器中的证书时遇到问题
安装完Lync客户端后,运行时Lync客户端时,报出如下错误: [原因解析] Lync客户端没有正确安装CA证书链. [解决办法] 第一种方法:将计算机加入域. 第二种方法:不加入域的处理方法: 1. ...
- Uploading Files in SharePoint 2013 using CSOM and REST
http://www.shillier.com/archive/2013/03/26/uploading-files-in-sharepoint-2013-using-csom-and-rest.as ...