我如何加入iPad和iPhone应用程序?

我有一个iPad应用程序和一个iPhone应用程序。

我想加入他们,这样如果加入应用程序将在iPad上运行,它会有一个行为,如果它在iPhone上运行,它会有另一个。

我认为的第一件事是制作不同的视图并为iphone / ipad选择视图,但我也有一些特定于ipad和iphone的内容(例如:splitViewController),因此只选择其他视图将无济于事。

加入2个这样的应用程序的最佳方式是什么? 我想要比做类似的更优雅的方法

if(isIPhone)
{
// code for iphone

}
else if(isIPad)
{
// code for iPad

}

每次我有两个版本之间的差异。 谢谢!


我相信WWDC 2010会议视频包括一个涵盖这个问题的iPad开发概览。

根据苹果的指导,我采取了以下方法:

您可以设置特定于平台的主界面笔尖,这意味着您也可以设置特定于平台的应用程序委托。 所以你可能有一个超类应用程序委托来完成你所有的应用程序设置,然后你可以使用子类来部署iPad UI或iPhone UI。

这很有帮助,因为在iPad上,分割视图需要交通警察来确定哪些内容会到达哪里。 现在你已经有了一个独立于视图控制器的逻辑:在应用程序委托中。

从那里开始,任何时候都有一个视图控制器对于两个平台都很常见,但每个平台都有一些特定的行为,将创建一个视图控制器超类来处理所有常见的功能。 特定于iPad的子类可能会重写-refreshView:方法来执行一些其他动画,或者添加属性和委托方法以支持拆分视图。

虽然你肯定可以用iPad来测试iPad-ness, if else在添加只在一个平台上使用的委托方法时,这可以在视图控制器中变得非常粗糙。 通过这种方式进行分解,您可以获得更易于维护和阅读的代码。 这可能意味着很多现有项目的重构。 但就我而言,这只需要大约一个小时,结果是一个非常简洁的应用程序,可以轻松地在一个或两个平台上进行修改。


你在找什么是这样的:

if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {
    // Do iPad specific stuff.
} else {
    // Do iPhone/iPod touch stuff here.
}

至少在XCode 4中,您可以设置每个目标要编译的代码,并完全忽略其余代码。 所以从理论上讲,您可以将您的所有iPad应用程序复制到iPhone应用程序中,然后确保每个应用程序仅引用自己的资源和代码。 您可能遇到的唯一问题是命名冲突,但您可以使用组和文件夹解决此问题。

这似乎是最简单的方法,因为你已经建成了。 这种方法的缺点是,您仍然需要单独修复代码中的错误,但是您的用户将能够在其iPhone和iPad上使用相同的应用程序。

编辑:

请参阅BUILD_PHASES > COPY_BUNDLE_RESOURCES & BUILD_PHASES > COMPILE SOURCES

链接地址: http://www.djcxy.com/p/95761.html

上一篇: How can i join an iPad and iPhone app?

下一篇: flash cs5 animations on ipad