iphone4/4s 程序適配 iphone5 過程 經驗 全記錄


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文件上。然后關聯一下即可。不需要修改任何代碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM