#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
//判断是都是IOS7系统
#define isIOS7 [[UIDevice currentDevice].systemVersion doubleValue] >= 7
//获取当前设备的尺寸
#define SELFUISCREENHEIGTH [UIScreen mainScreen].bounds.size.height
#define SELFUISCREENWIDTH [UIScreen mainScreen].bounds.size.width
用两个xib文件来适配
在原有的项目中 新建一个xib 我们可以把它命名为 ViewController_iphone5.xib 并且与相应的类做关联。具体方法为
1、选中xib 然后看xib里面 左边的透明装黄色方格 File"s owner 然后选择 在输入框中选择与之关联的类
2、
这样就使用这个xib
代码使用两个xib文件
if (iPhone5) { self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iphone5" bundle:nil] autorelease]; }else{ self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iphone" bundle:nil] autorelease]; }
我们再来说说 xib里面的很多属性:
我们在来说一下 IOS7 和之前的系统坐标的区别 ,自从ios7出来以后,各种适配问题都来了,比如说新建一个xib 里面给的尺寸是3.5 或者 4.0 而且是不可变的,这个应该怎么办呢 在 右边框里面的
- 这里面的size属性就可以自由变换你需要的尺寸
- orientation是设置view横向显示还是竖向显示
- status是上面20像素的那个状态栏的选项
- top bar 如果页面需要导航条,可以在这里面选择,然后做适配
- Bottom bar 是如果下面也分页栏 可以在这里选择在做适配
ios7系统的坐标是从屏幕的左上角的,也就是说状态栏也在坐标之内,即使说页面添加了导航条 坐标也还是从最左上角开始
IOS7之前的系统坐标算法是不一样的,他的坐标是从状态栏下面开始的,如果说页面上也加了导航条,那么坐标就是从导航条下面开始算的
我们来看这张图
右边的xib是考虑到导航条的宽度来设置的按钮位置,但是跑出来的效果确实左边的。但是如果在ios7系统里面跑程序就不会有这个情况。
为什么会出现这个问题呢?
那是因为导航条直接把这个xib向下推移了导航条的高度。这样就会有问题出现了:我们在xib最下面放一个按钮,在ios7之前的系统版本运行出来的话,就看不到这个按钮所以在做布局的时候,要考虑到这个问题。
一般来讲,如果是这样的话,我们在xib里面做的时候是选择把xib下面的空余出来来达到铺满全屏的效果,但是在ios7里面空余出来运行出来的就是空余出来的,所以我们需要做一下调整,具体方法可以参照http://blog.csdn.net/u011332675/article/details/17584237
不过在这里要说的一点就是 增量有些时候你是看不到的,这是为什么呢 在第一栏的下面 有一个 Use Autolayout 选项,要把勾 去掉 还有一点需要提醒的是:要选择页面里面的元素来做增量,直接选 中view是没用的