我有一个 iPad 应用程序和一个 iPhone 应用程序。
我想加入他们,这样如果加入应用程序将在 iPad 上运行,它将有一个行为,如果它在 iPhone 上运行,它将有另一个行为。
我想到的第一件事是制作不同的 View 并为 iphone/ipad 选择 View ,但我还有一些特定于 ipad 和 iphone 的东西(例如:splitViewController),所以仅选择不同的 View 无济于事.
加入 2 个这样的应用程序的最佳方式是什么?我想要一种比做类似的事情更优雅的方法
if(isIPhone)
{
// code for iphone
}
else if(isIPad)
{
// code for iPad
}
每次我发现这两个版本之间存在差异。谢谢!
最佳答案
我相信 WWDC 2010 session 视频中包含的 iPad 开发概述正好涵盖了这个问题。
根据 Apple 的指导,这是我采用的方法:
您可以设置特定于平台的主界面 nib,这意味着您也可以设置特定于平台的app delegates。因此,您可能有一个父类(super class)应用委托(delegate)来完成所有应用设置,然后是子类以部署 iPad UI 或 iPhone UI。
这很有用,因为在 iPad 上, Split View需要交通警察来确定内容的位置。现在你有一个地方可以独立于 View Controller 放置该逻辑:在应用程序委托(delegate)中。
从那里,只要有一个 View Controller 对两个平台都是通用的,但每个平台都有一些特定的行为,就会创建一个 View Controller 父类(super class)来处理所有通用功能。然后,特定于 iPad 的子类可能会覆盖 -refreshView: 方法来执行一些额外的动画,或者添加属性和委托(delegate)方法以支持 Split View。
虽然您绝对可以使用 if else
测试 iPad 特性,但是当您添加仅在一个平台上重要的委托(delegate)方法时,这在 View Controller 中会变得真的粗糙.通过这种方式拆分,您将获得更易于维护和阅读的代码。这可能意味着对现有项目进行大量重构。不过,就我而言,它只花了大约一个小时,结果是一个非常整洁的应用程序,很容易投入使用并针对一个或两个平台进行修改。
关于iphone - 如何加入 iPad 和 iPhone 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6912878/