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管理)
********************************************************************************
 第一天最终效果图:

ios-仿新浪微博app-第1天UI搭建的更多相关文章

  1. ios 仿新浪微博 UINavigationController 向左滑动时显示上一个控制器的View.

    仿新浪微博 UINavigationController 向左滑动时显示上一个控制器的View. 实现原理,UINavigationController 的 self.view显示时把当前显示的vie ...

  2. iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建

    iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建 一.实现效果 说明:该示例在storyboard中使用动态单元格来完成. 二.实现 1.项目文件结构 ...

  3. iOS仿QQ侧滑菜单、登录按钮动画、仿斗鱼直播APP、城市选择器、自动布局等源码

    iOS精选源码 QQ侧滑菜单,右滑菜单,QQ展开菜单,QQ好友分组 登录按钮 3分钟快捷创建高性能轮播图 ScrollView嵌套ScrolloView(UITableView .UICollecti ...

  4. IOS 使用SDWebImage实现仿新浪微博照片浏览器

    使用第三方库SDWebImage实现仿新浪微博照片浏览器,可以下载图片缓存,点击之后滚动查看相片,具体效果如下: 代码如下: WeiboImageView.h: #import <UIKit/U ...

  5. 【手把手教程】uniapp + vue 从0搭建仿微信App聊天应用:腾讯云TXIM即时通讯的最佳实践

    基于uniapp + vue 实现仿微信App聊天应用实践,实现以下功能 1: 用户登陆 2: 聊天会话管理 3: 文本/图片/视频/定位消息收发 4: 贴图表情消息收发 5: 一对一语音视频在线通话 ...

  6. uniapp+nvue实现仿微信App界面+功能 —— uni-app实现聊天+语音+视频+图片消息

    基于uniapp + nvue实现的uniapp仿微信界面功能聊天应用 txim 实例项目,实现了以下功能. 1: 聊天会话管理 2: 好友列表 3: 文字.语音.视频.表情.位置等聊天消息收发 4: ...

  7. 分分钟解决iOS开发中App启动广告的功能

    前不久有朋友需要一个启动广告的功能,我说网上有挺多的,他说,看的不是很理想.想让我写一个,于是乎,抽空写了一个,代码通俗易懂,简单的封装了一下,各种事件用block回调的,有俩种样式的广告,一种是全屏 ...

  8. iOS UIKit:App

    1.App生命周期 IOS架构是由许多设计模式实现,如model-view-controller 和 delegation模式. 1.1 main函数 与其它框架类似,IOS框架的入口也是从main函 ...

  9. iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard

    本系列文章中,我们将一起认识.了解当下 iOS 开发中几种常见的 UI 构建方式,分析他们分别适合的使用场景,以便让我们在以后的开发中,能够在恰当的时间.场景下做出最佳的选择,提升开发效率,增强程序的 ...

  10. 【HELLO WAKA】WAKA iOS客户端 之一 APP分析篇

    由于后续篇幅比较大,所以调整了内容结构. 全系列 [HELLO WAKA]WAKA iOS客户端 之一 APP分析篇 [HELLO WAKA]WAKA iOS客户端 之二 架构设计与实现篇 [HELL ...

随机推荐

  1. 网络流量监控shell脚本

    网络收发包计数记录在 /proc/net/dev 文件中, 要取得流量, 只需要读取里面的内容两次, 然后相减, 再除以时间间隔即可. #!/bin/bash #Usage1,record in fi ...

  2. 七、Action动作类

    七.Action动作类(一般用**Action结尾) 1.编写动作类的三种方式 动作类不实现.也不继承任何的接口和类.即动作类是一个非常普通的JavaBean. public class HelloA ...

  3. sqlite:多线程操作数据库“database is locked”解决方法(二)

    上一篇博客<sqlite:多线程操作数据库“database is locked”解决方法>通过注册延时函数的方法来处理数据库被锁的问题.此方法固然能解决问题,但是在多个线程向数据库写入大 ...

  4. HTML5应用之时钟

    利用HTML5的Canvas API可以完成我们以前意想不到的动画效果,以前我们想在网页上放置一个时钟,需要先用flash工具制作一个钟表,并写上复杂的JavaScript代码,然后载入到页面中.而H ...

  5. dirname(__FILE__)与__DIR__全等

    小例子如下: <?php$the_full_name = __FILE__;$the_file = dirname(__FILE__);echo $the_full_name.'<br/& ...

  6. js代码优化

    1.减少Jquery使用 处理dom遍历和复杂的脚本场景时,jquery可能有很大的帮助,不过在处理简单的.直截了当的代码场景就会迟缓.尽可能的避免jquery对象创建,尤其在循环中. 2.优化循环 ...

  7. [terry笔记]RMAN综合学习之恢复

    [terry笔记]RMAN综合学习之备份http://www.cnblogs.com/kkterry/p/3308405.html [terry笔记]RMAN综合学习之恢复 http://www.cn ...

  8. 编译mgiza的准备

    cmake之前需要首先设置环境变量: export BOOST_LIBRARYDIR=$BOOST_ROOT/lib64export BOOST_ROOT=/home/noah/boost_1_57_ ...

  9. [原创]PostgreSQL Plus Advanced Server监控工具PEM(三)

    三.使用PEM Client 在PEM Client中连接PEM Server 点击上图所示的按钮或点击菜单-> 第一次连接PEM Server,会有一次导入证书的操作,点击Yes按钮. 接下来 ...

  10. 关于Filezilla是否支持sftp

    我们知道filezilla是一个开源的ftp的解决方案,它提供了客户端和服务器端,支持的fpt, sftp, ftps,这是你可以从wiki中看到的关于filezilla的介绍,但是这里需要澄清一点就 ...