zoukankan      html  css  js  c++  java
  • iphone4 与iphone5适配

    转:http://www.cnblogs.com/ygm900/archive/2013/05/24/3098015.html

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

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

    第一步:

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

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

    第二步:

    将AViewController_ip5.xib 添加到工程中;

    因为AViewController_ip5.xib文件是AViewController.xib的拷贝,我们甚至连它与 AViewController.h/.m文件之间的关联都不需要做。(如果你是自己手动创建了一个xib文件,那么你需要为其关联一个类,方法参加:手动关联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文件上。然后关联一下即可。不需要修改任何代码。

  • 相关阅读:
    react绑定事件
    js基础
    浅谈vue中index.html、main.js、App.vue、index.js之前的关系以及加载过程
    jmeter+influxdb+grafana搭建压测监控平台
    javascript中的constructor
    javascript es6新增语法之`${}`
    微服务网关 ----- Nginx 和 Zuul 的区别
    Spring AOP SpringBoot集成
    Spring AOP 面向切面编程入门
    Vue中$refs与$emit的区别及使用场景实例
  • 原文地址:https://www.cnblogs.com/stephen-init/p/4357853.html
Copyright © 2011-2022 走看看