1:不用storyboard 点击工程删除main ui加载全部手码
>> 在application的代理方法didFinishLaunchingWithOptions中添加代码显示window
>>并且设置根控制器为自定义的UITabBarController:XBMainTabController
***********************************代码区****************************************
// 启动完成 让任务栏可见
application.statusBarHidden = NO;
// 创建窗口
self.window = [[UIWindow alloc] init];
self.window.frame = [UIScreen mainScreen].bounds;
// 设置窗口的根控制器
XBMainTabController *tabBarVc = [[XBMainTabController alloc] init];
self.window.rootViewController = tabBarVc;
// 让窗口成为主窗口 (显示窗口)
[self.window makeKeyAndVisible];
********************************************************************************
2:程序图标(ios6简单适配)
>>ios6下图标高亮效果不要 即不要让系统渲染程序图标
****具体步骤:点击程序图片 在右边的工具栏中设置不要渲染
>>从外边托图片时 如果直接拖进来一个文件夹 最好先在程序的硬盘里拷贝好 在从程序硬盘里拖进来
3:启动图片:
>>启动图片 适配ios6的3.5英寸 修改plist文件
>>启动图片的全屏化:由于ios7view的尺寸默认是全屏的,而ios6不是,不包括状态栏的;
>>>>1:所以要再ios6中显示全屏的启动图片:现在工程中设置启动时不要显示状态栏
>>>>2:然后在application的代理方法didFinishLaunchingWithOptions中设置application.statusBarHidden = NO;
*****小知识**********************************************************************
A:一般一些程序的包内容在 个人(Finder-》前往-》个人)的 资料库(默认情况这个资料库是隐藏的)中;
显示和隐藏文件的终端命令:defaults write com.apple.finder AppleShowAllFiles -bool true/false
B:代码管理:创建不同的文件夹 来管理代码
>>一般的管理:以模块划分,每个模块都有自己的controller view model
********************************************************************************
4:控制器结构:tabbarcontroller下边管理四个navigationBarcontroller ,然后再包viewController
*****小知识**********************************************************************
设置标题 tabbar的标题
viewController.tabBarItem.title = title;
设置navigation的标题
viewController.navigationItem.title = title;
/*******************上边的两个设置title可以直接用一句代替******************/
viewController.title = title;
********************************************************************************
>>在自定义的UITabBarController:XBMainTabController中添加四个子控制器
>>每个都用navigationBarcontroller 包装
5:对常用的或全局都可以用的变量或常量进行宏定义 在.pch文件中进行宏定义
>>随机色:#define RandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(255)/255.0 blue:arc4random_uniform(255)/255.0 alpha:1.0]
>>判断是否为ios7:#define iOS7 [[UIDevice currentDevice].systemVersion doubleValue] >= 7.0
6:tabbar底部的图片不要渲染 ios7的特性,默认都会对选中的tabbar图片渲染成蓝色
***
这个方法只能再ios7上用 所以这里要判断 让这段代码只在ios7中执行
***********************************代码区****************************************
if (iOS7) { // 如果是ios7 设置图片不要渲染
imageSelected = [imageSelected imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
// 使用原图 不进行渲染
}
********************************************************************************
7:对UIImage添加分类 适配ios6和7的图片适配
>> 应运程序一般要求ios6和ios7中界面基本相同 这时要对当前系统做判断 针对不同的系统用不同的图片
>> 一般ios7的图片名会在后边多一个ios7的后缀
***********************************代码区 图片适配代码*****************************
+(UIImage *)imageWithNamed:(NSString *)imageName
{
UIImage *image = nil;
if (iOS7) { // 如果是ios7 加后缀
NSString *newName = [imageName stringByAppendingString:@"_os7"];
image = [UIImage imageNamed:newName];
}
if (image == nil) { // 说明不是ios7
image = [UIImage imageNamed:imageName];
}
return image;
}
设计思想:该方法添加到UIimage的分类中 ,并写为类方法 ;这样设计以后,我们在其他地方设置图片不需要
用UIImage 的imageNamed方法,直接用我们添加的类方法,这样就悄无声息的适配了ios6和7;做到真正的
代码封装,这样的代码才是漂亮的代码;(设置图片这个功能,本就该归UIImage管理)
********************************************************************************
第一天最终效果图: