[英]iOS Development: How can I prevent an iPad from running a universal app in iPad mode?
我正在深入iOS开发,我创建了一个通用应用程序,变成了一个仅限iPhone的应用程序。 当它在iPad上运行时,它只会加载一个白色屏幕,因为还没有写入iPad代码。 我想要的是它在iPad上以“iPhone”模式运行,如果它以某种方式最终在iPad上运行。 我将“目标设备系列”属性设置为“iPhone”,这样可以防止它作为iPad应用程序在App Store中显示,但如果有人同时拥有iPad和iPhone,那么应用程序最终可能会同步在iPad上,它只会加载白色屏幕,因为它会尝试在iPad模式下运行应用程序,它没有任何支持的代码。 在这种情况下,我更喜欢它实际上在iPad上运行,但在iPhone模式下。
我的问题是......
如果我听起来像一个总菜鸟,我道歉,但我是。 非常感谢你的智慧!
我假设您真正想要的是删除“通用”功能,并将其设为iPhone应用程序。
在Xcode中,转到Project => Edit Project Settings => Build。
搜索通用或“目标设备系列”。
选择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 */
}
您不应将此添加到Info.plist文件中。 相反,根据Apple的建议将其添加到您的构建设置中。 具体来说,使用TARGETED_DEVICE_FAMILY构建设置。
如果您使用的是故事板,则还需要从Info.plist中删除UIMainStoryboardFile~ipad密钥,因为无论您的TARGETED_DEVICE_FAMILY设置如何,都会使用它。
祝好运!
如果您构建通用应用程序,它将使用您的iPad代码。 无法在“iPhone模式”下运行通用应用程序。 Apple将检查您是否遵循了iPad设计规范。
在通用应用程序中,有两个app-delegate:AppDelegate_iPhone.h和AppDelegate_iPad.h
您可以在AppDelegate_iPad中添加iPhone代码,但Apple不会高兴。
从Xcode 5
,您可以从项目中选择开发目标设备:
从Development Info
的设备部分,现在您可以选择:
1-iPhone 2- iPad 3- Universal
我认为你的配置出了问题,因为如果你只针对iPhone的设备定位代码,应用程序就可以在iPad上运行,屏幕是专为iPhone设计的(因此,减少了,有可能是x2)。
[[UIDevice currentDevice] userInterfaceIdiom]
... 我认为info.plist文件中有一个条目,用于说明要加载哪个主窗口的每个设备。 也许一个快速而肮脏的解决方案是将MainWindow-iPhone和MainWindow-iPad设置到同一个-iPhone-主窗口。
另一种方法(使用代码)是:
在App的AppDelegate中(如果您的应用程序是作为通用应用程序创建的),您可以找到以下代码:
- (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;
}
在那里,您可以自定义要显示的视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.