博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iphone4/4s 程序适配 iphone5 过程 经验 全记录
阅读量:6553 次
发布时间:2019-06-24

本文共 1907 字,大约阅读时间需要 6 分钟。

iphone4/4s 应用程序升级适配 iphone5 的方法有很多,而且其中原理在网上也找的到。本次废话不多说,单简要叙述我的过程:

综合权衡,我选择用 增加xib文件的方法

第一步:

为需要适配找到工程中需要适配iphone5的xib文件,加入是AViewController。

首先,到工程文件目录下,找到AViewController.xib文件,然后在同一文件夹下拷贝一份,重命名为AViewController_ip5.xib  文件。

第二步:

将AViewController_ip5.xib 添加到工程中;

因为AViewController_ip5.xib文件是AViewController.xib的拷贝,我们甚至连它与AViewController.h/.m文件之间的关联都不需要做。(如果你是自己手动创建了一个xib文件,那么你需要为其关联一个类,方法参加:)

第三步:

选中AViewController_ip5.xib中的view,在右侧的attributes inspector -> simulated metrics ->size 下将view的size 设置为retina 4 full screen,此时,view就变成iphone5的4英寸了。

根据你的需要对xib文件中的元素进行位置调整。

第四步:

在需要用到AViewController.xib和AViewController_ip5.xib的controller的.m文件中,增加以下宏,判断设备是否是iphone5

#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)

然后,在用到AViewController.xib和AViewController_ip5.xib文件的代码中做个判断即可,如下所示例:

if (iPhone5) {       IndexViewController *myIndexViewController = [[IndexViewController alloc]initWithNibName:@"IndexViewController_ip5" bundle:nil];        [self.view addSubview:myIndexViewController.view];    }else{       IndexViewController *myIndexViewController = [[IndexViewController alloc]initWithNibName:@"IndexViewController" bundle:nil];        [self.view addSubview:myIndexViewController.view];    }

ok,大功告成!

 

DeBug:

写代码,要是没几个错误,那还有什么乐趣呢?

使用上述方法过程中你可能会遇到的几个问题:

 

1、系统抛出:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/38AF505B-F07C-4CD5-8752-E0E8783330CB/hall.app> (loaded)' with name 'UserinfoOnNavibar'

原因:英语直译   因为“内部的不协调、不一致导致的异常”,所以无法加载NIB  文件;

实际的原因是,我直接拷贝了一个在xcode4.3下创建的xib文件改名后,在xcode4.5中用以上方法适配iphone5 时结果系统抛出如上错误。

解决方案:不要再用拷贝的方法了,自己手工在xcode4.5下建一个你要的xib文件吧。

 2、遇到一个scrollview 不能滚动的现象;

解决方案: 将在xcode 4.3下拖动到xib文件上的scrollview 删除,然后重新在xcode4.5下重新拖动一个scollview到xib文件上。然后关联一下即可。不需要修改任何代码。

 

转载地址:http://lcjco.baihongyu.com/

你可能感兴趣的文章
sed命令
查看>>
Oracle Parallel Execution(并行执行)
查看>>
JAVA面向对象-----封装
查看>>
PhpStorm函数注释的设置
查看>>
Centos 7 安装 mysql
查看>>
侧栏广告 跟随浏览器移动(扩展)
查看>>
第二阶段冲刺阶段站立会议每天任务5
查看>>
Xshell用密钥远程连接Linux
查看>>
nginx配置详解
查看>>
【JAVA语法】01Java-变量与数据类型
查看>>
How to solve problems
查看>>
Struts_登录练习(未配置拦截器)
查看>>
JAVA面试题01
查看>>
生产者—消费者模式示例
查看>>
HTML-css selector
查看>>
NeatUpload 同时选择并上传多个文件
查看>>
SSH远程访问
查看>>
js 实现弹力球效果
查看>>
基于hi-nginx的web开发(python篇)——utf-8编码
查看>>
JavaWeb笔记——利用过滤器实现页面静态化
查看>>