iOS开发:如何防止iPad在iPad模式下运行通用应用程序?
我深入iOS开发,并创build了一个通用的应用程序,变成一个iPhone的应用程序。 当它在iPad上运行时,由于没有写入iPad代码,因此只会加载白色屏幕。 我想要的是它在iPad上以“iPhone”模式运行,如果它以某种方式在iPad上结束的话。 我将“目标设备系列”属性设置为“iPhone”,因此应该防止它在App Store中作为iPad应用程序显示,但是如果任何人拥有iPad和iPhone,则应用程序可能会同步到iPad,在这一点上它只会加载白色的屏幕,因为它会尝试在iPad模式下运行的应用程序,它没有任何代码支持。 在这种情况下,我更喜欢它实际上在iPad上运行,但在iPhone模式下运行。
我的问题是…
- 当iPad运行通用应用程序时,如何知道如何在“iPhone模式”下运行它或执行iPad特定的代码?
- 在一个通用的应用程序,它是如何知道哪些代码是iPhone和哪个代码是iPad?
- 我怎样才能防止iPad试图运行iPad代码,而是运行iPhone代码?
我道歉,如果我听起来像一个全面的noob,但我是。 非常感谢您的智慧!
- iPad将查找应用程序的Info.plist,作为UIDeviceFamily键,这是一个数组。 值“1”表示iPhone / iPod Touch,“2”表示“iPad”。 如果有'1'但不是'2',那么你会得到模拟的iPhone环境。 这个值将作为“目标设备系列”的结果自动写入Info.plist。 如果你认为你已经把它设置为iPhone,但仍然得到一个iPad生成,检查你不只是设置一个生成configuration。 如果你想真正有信心,请检查你生成的应用程序包中的Info.plist。
- 只有一个二进制文件,你写在任何设备上正确启动。
- 只是不要瞄准iPad。
我假设你真正想要的是去除“通用”的能力,只是使其成为一个iPhone应用程序。
在Xcode中,进入Project => Edit Project Settings => Build。
search通用或“目标设备系列”。
挑选iPhone。
再见了iPad。
当iPad运行通用应用程序时,如何知道如何在“iPhone模式”下运行它或执行iPad特定的代码?
iPad寻找Targeted Device Family
,如果iPad不存在,那么它知道它必须在iPhone模式下运行应用程序。
在一个通用的应用程序,它是如何知道哪些代码是iPhone和哪个代码是iPad?
当您为应用程序编写代码时,如果您需要为每个设备执行特定的操作,则必须指定要定位的设备。 (请参阅下面的代码示例)
我怎样才能防止iPad试图运行iPad代码,而是运行iPhone代码?
不要在您的Targeted Device Family
支持iPad。 其次,在你的代码中,不要指定特定的代码需要一个特定的设备,例如:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { /* run something specific for the iPad */ } else { /* run something specific for the iPhone */ }
-
如果你build立一个通用的应用程序,它将使用你的iPad代码。 在“iPhone模式”下运行通用应用程序是不可能的。 苹果会检查你是否遵循了iPad的devise规范。
-
在通用应用程序中,有两个应用程序委托:AppDelegate_iPhone.h和AppDelegate_iPad.h
-
你可以在AppDelegate_iPad中添加你的iPhone代码,但苹果不会感到高兴。
你不应该把这个添加到你的Info.plist文件中。 相反,按照苹果的build议将其添加到您的构build设置。 具体来说,使用TARGETED_DEVICE_FAMILY构build设置。
如果您正在使用故事板,则还需要从Info.plist中删除UIMainStoryboardFile〜ipad键,因为无论您的TARGETED_DEVICE_FAMILY设置如何,都将使用它。
祝你好运!
我认为每个设备的info.plist文件中都有一个条目,指出要加载哪个主窗口。 也许一个快速而肮脏的解决scheme是将MainWindow-iPhone和MainWindow-iPad设置为相同的-iPhone-主窗口。
另一种方法(与代码)是:
在App的AppDelegate中(如果您的App是作为通用App创build的),您可以find以下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { //iPad... } else { //iPhone and iPod Touch... } return YES; }
在那里您可以自定义要显示的视图。
自Xcode 5
以来,您可以从项目中select您的开发目标设备:
从Development Info
的设备部分,现在您可以select:
1 – iPhone 2 – iPad 3 – 通用
我认为你的configuration有问题,因为如果你的目标代码仅用于iPhone的设备,应用程序将运行在iPad上的屏幕是专为iPhone(所以,减less,可能性为x2)。
- AppStore(iPhone / iPad /两者)的build议取决于用户的喜好
- 您可以使用模拟器进行试验(并selectiPad作为设备)
- 代码是一样的iPad / iPhone! …除非你使用
[[UIDevice currentDevice] userInterfaceIdiom]
上面提到的…