我如何加入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