iPhone 移植到 iPad

iPhone 移植到 iPad,第1张

概述  方法一 修改设备目标设置(普通模式:一套代码及XIB界面文件,代码分if和else来分别处理多种设备) 默认情况下,所有的iPhone程序都会运行在他们原始的屏幕大小320x480(非全屏状态),如果你想让你的程序运行在iPad上,且为全屏状态,你需要修改项目设置你们的Targeted Device Family选为iPhone/iPad(这种模式使你的程序可以自动检测运行的设备类型,并使你的


 

方法一 修改设备目标设置(普通模式:一套代码及XIB界面文件,代码分if和else来分别处理多种设备)

默认情况下,所有的iPhone程序都会运行在他们原始的屏幕大小320x480(非全屏状态),如果你想让你的程序运行在iPad上,且为全屏状态,你需要修改项目设置你们的Targeted Device Family选为iPhone/iPad(这种模式使你的程序可以自动检测运行的设备类型,并使你的程序全屏显示)。

将iPhone运行的iOS版本切换到iPad运行的版本。(当前iPhone iOS系统版本为4.1,iPad为3.2)。 修改目标设备族(Build里面的Targeted Device Family选为iPhone/iPad )。

 

现在可以使你的程序运行在iPad上了。但是,你会看到你的界面(UI)和iPhone下面完全一样,这不是我们需要的。所以,重新布局你的VIEws是程序员的责任,即重定位(reposition)VIEws。

首先,我们需要手工检测运行的设备类型。(使用预编译命令)

#if(__IPHONE_OS_VERSION_MAX_ALLOWED>=30200)

Nsstring *str;

if(UI_USER_INTERFACE_IdioM()==UIUserInterfaceIdiomPad){

//iPad 版本代码;

}

else

//iPhone/iPod touch 版本代码; 

  #endif

或者

#define isPad (UI_USER_INTERFACE_IdioM() == UIUserInterfaceIdiomPad)。UI_USER_INTERFACE_IdioM()方法返回值UIUserInterfaceIdiomPhone或UIUserInterfaceIdiomPad。

 

▪ 方法二 建立通用类型程序(两套代码及XIB界面文件,两套代码及界面互不相干)

上一种方法的缺点是,你必须自己写两个版本(iPhone/iPod 和iPad)的代码来适配不同的平台,同时要动态修改UI布局(及控件尺寸等),是挑战,但也很痛苦。所以,Apple建议你创建“Universal”,即通用型的应用。这样的应用可以在iPhone和iPad下面运行。这需要为各个平台建立相应的.h,.m和.xib文件。后台业务代码自然要写在相应版本的.h,.m文件里面。

升级项目的设备目标到iPad。实质上,这里Xcode把项目的Targeted Device Family 设置修改成了iPhone/iPad。Xcode会创建MainWindow.xib文件的副本,并命名为MainWindow-iPad.xib。这时,这两个文件都包含“projectname”VIEwController这个VIEwController。如下图: 添加新的对应iPad版本的xib文件到Resource-iPad文件夹。命名规范:“iPad‘功能’VIEwController.xib”(或者‘功能’VIEwController-iPad.xib”),生成.h,.m,.xib文件。并将这些iPad版本的xxVIEwController连接到MainWindow-iPad.xib(和正常的iPhone版本一样)。 这样,选择不同的模拟器(Simulator)就可以看到同一套代码处理过的相应版本的界面效果。

 

注:首先选择Upgrade the Device Target For iPad ,这里Xcode把项目的Targeted Device Family 设置修改成了iPhone/iPad。MainWindow.xib和MainWindow-iPad.xib作为两个版本的入口,其他相应版本的VIEwController连接到自己的MainWindow(-iPad).xib文件即可。 看到的效果是: ▪ 方法三 维护两套UI库(一套代码及两套XIB界面文件,两套界面公用一套代码)

这种情况下,你会得到两个可执行体(executables),一个for  iPhone/iPod touch,一个 for iPad。

建立iPhone的应用,升级到iPad兼容。方法同二,不同的是,方法二选的是One Universal application,而这里选的是Two device-specific applications。

 

这样的话,与方法二建立相应的-iPad版本文件不同的是,这里是将iPhone版本的文件直接拷贝进Resource-iPad文件夹,文件名称一样。代码只需要一份,只不过需要把Resource和Resource-iPad文件夹下的xxVIEwController的file's Owner都设置为Classes文件夹里面的同一个xxVIEwController类就可以了,其他界面UI元素设置连接到file's Owner。同时,会产生两个版本的可执行体(executables),“projectname”.app和“projectname”-Upgraded.app。

看到的效果是:同一套代码处理过的相同结果的界面。

 

总结:由于实际项目后台生成控件,尤其是tableVIEw会比较多,为了适应iPhone和iPad,可以考虑用第三种方法,一套代码,两套XIB界面。后台加载时,用:

 

if(isiPad){

UItableVIEwController *tableVIEwController=[[UItableVIEwController alloc] initWithNibname:@"iPadxxVIEwController" bundle:nil];

}

else {

UItableVIEwController *tableVIEwController=[[UItableVIEwController alloc] initWithNibname:@"iPhonexxVIEwController" bundle:nil];

}

即可。iPadxxVIEwController和iPhonexxVIEwController分别代表相应的iPadxxVIEwController.xib和iPhonexxVIEwController.xib文件。

希望对大家有用。

声明:总结以上内容来自外文教程翻译,本人对本篇文章的所有权仅限于最后的总结部分。

总结

以上是内存溢出为你收集整理的iPhone 移植到 iPad全部内容,希望文章能够帮你解决iPhone 移植到 iPad所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存