一、没有包装任何 导航控制器 或者 UITabBarController

1.控制器的view是UIScrollView\UITableView\UICollectionView时(控制器是UITableViewController的时候)

- (void)viewDidLoad

{

[super viewDidLoad];

// #ifdef __IPHONE_7_0是判断是否运行在Xcode5环境下,如果在Xcode5环境下才有下面的代码

#ifdef __IPHONE_7_0

if ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0) {

self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);

}

#endif

}

2.控制器的view是普通的UIView,非UIScrollView

#ifdef __IPHONE_7_0

- (void)viewDidLayoutSubviews

{

// iOS7 && 没有包装导航控制器

if ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0 && self.navigationController == nil) {

CGFloat top = [self.topLayoutGuide length];

// 是否能滚动

if ([self.view isKindOfClass:[UIScrollView class]]) {

UIScrollView *scroll = (UIScrollView *)self.view;

scroll.contentInset = UIEdgeInsetsMake(top, scroll.contentInset.left, scroll.contentInset.bottom, scroll.contentInset.right);

} else {

CGRect bounds = self.view.bounds;

bounds.origin.y =  - top;

self.view.bounds = bounds;

}

}

}

#endif

二、包装有导航控制器的情况

1> 控制器的view不是UIScrollView

#ifdef __IPHONE_7_0

if ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0) {

self.edgesForExtendedLayout = UIRectEdgeNone;

}

#endif

2> 控制器的view是UIScrollView

不需要写额外的代码适配

三、其他情况(上述情况不用死机,只要掌握以下几点规律)

1.想让view的内容往下挪动

1> UIView设置bounds的y值

2> UIScrollView设置contentInset的top值

2.防止子控制器的view被导航栏或者tabbar遮住

self.edgesForExtendedLayout = UIRectEdgeNone;

四、多控制器嵌套处理

1.当多重控制器嵌套的时候,最合理的方案是:UITabBarController内部嵌套UINavigationController

2.当UITableViewController的直接父控制器是UINavigationController时,不需要编写任何适配代码

3.其他非UITableViewController需要加上适配代码

#ifdef __IPHONE_7_0

if ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0) {

self.edgesForExtendedLayout = UIRectEdgeNone;

}

#endif

iOS6与iOS7屏幕适配技巧的更多相关文章

  1. [操作系统]iOS6与iOS7屏幕适配技巧

    一.没有包装任何 导航控制器 或者 UITabBarController 1.控制器的view是UIScrollView\UITableView\UICollectionView时(控制器是UITab ...

  2. Android屏幕适配技巧

    屏幕适配一直是困扰 Android 开发工程师的一大问题,但是随着近几年各种屏幕适配方案的诞生,以及谷歌各种适配控件的推出,屏幕适配也显得越来越容易,这节课我们就来总结一下关于屏幕适配的那些技巧. C ...

  3. IOS6和IOS7的屏幕适配问题

    自从IOS7出来以后,以前写在IOS6上或者更低版本的程序,跑在IOS7的模拟器上就会出现一些问题.最大的问题就是,所有的UI空间都会统一向上移动20个点(如果空间的y值为0,就会被StatusBar ...

  4. iOS- <项目笔记>iOS6 & iOS7屏幕图片适配

    1.为非视网膜\视网膜屏幕分别准备2份图片,比如: 1> 非视网膜 abc.png 2> 视网膜 abc@2x.png 程序检测视网膜屏到会自动替换@2x 2.程序启动图片 * 程序启动过 ...

  5. iOS6和iOS7代码的适配(3)——坐标适配

    由于iOS7里面status bar和视图是重叠在一起了,所以应用的y坐标就没法和以前一致了,需要重新计算设定.基本上,你的应用用Xcode5运行一下就能看见这个问题,这里写了一个最简单的例子,一个V ...

  6. iOS6和iOS7代码的适配(1)

    苹果的iOS7推出后,对于所有的应用来说都提出了一个天然的需求--适配不同版本的SDK.目前来说,用iOS6的SDK生成的应用,可以在iOS7的系统上跑,UI上也保持了原来的风格样式,这是苹果做的向下 ...

  7. 适配iOS6与iOS7

    适配屏幕其实很简单,但为了保持兼容性以及写的代码的通用性,以及最小的改动代码,本人按照如下的一种方式来适配,可以一劳永逸. 1. 先定义几个宏,分辨表示应用可以使用区域的高度,屏幕可用区域的高度,屏幕 ...

  8. 关于如何写UI及屏幕适配的一些技巧

    因为公司开启了一个新的iOS项目, 所以近期比较忙, 没有更新博客,今天打算总结一下关于UI布局及屏幕适配的一些实战技巧,尤其使用纯代码,会对提升效率及代码易于维护等方面有明显帮助,这里提到的没有使用 ...

  9. ios6和ios7禁止屏幕旋转

    ios6和ios7禁止屏幕旋转 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOr ...

随机推荐

  1. USB OTG ID 检测原理

    OTG 检测的原理是: USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG).USB OTG技术可实现没有主机时 ...

  2. Qt Windows下链接子系统与入口函数(终结版)(可同时存在main和WinMain函数)

    Qt Windows下链接子系统与入口函数(终结版) 转载自:http://blog.csdn.net/dbzhang800/article/details/6358996 能力所限,本讨论仅局限于M ...

  3. 浅析指针(pointer)与引用(reference)

    在c++函数中,形式参数用引用和用指针都可以起到在被调用函数中改变调用函数的变量的作用.什么时候用引用作参数?什么时候用指针作参数呢 void function (int *ptr); void fu ...

  4. cygwin在Windows8.1中设置ssh的问题解决

    为了在Windows 8.1上直接使用Linux环境和hadoop开发,装了cygwin,同时设置ssh无密码登录.   但正常ssh-keygen后复制到authorised_keys后登录出现提示 ...

  5. gdb的user-define command

    搜索: user-defined例子. # save this file in ~/.gdb or some where easy to find. # then in ~/.gdbinit add ...

  6. 关于hasOwnProperty()方法的应用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 茴香豆的第五种写法---设置ExpandableListView系统自带图标按下效果

    1 编写groupindicator_selector.xml如下: <?xml version="1.0" encoding="utf-8"?> ...

  8. .Net C# ASP.Net和ADO.Net

    1.NET是一个平台,一个抽象的平台的概念. .NET平台其本身实现的方式其实还是库,抽象层面上来看是一个平台. .NET Framework包括两个关键组成元素: a.Common Language ...

  9. JavaScript之面向对象学习八(继承)

    简介:继承是OO语言中的一个最为人津津乐道的概念.许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法. 但是JS的函数并没有签名,所以在ECMASc ...

  10. nodejs教程:安装express及配置app.js文件

    express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板.下面简单来说说express的安装和app.js文件的配置,然后在今后的教程中一步一步使用express.js搭建个 ...