出于开发的原因,我开始开发一个通用的 iOS 应用程序,但只想先用 iPhone 版本启动。
除了在构建设置中将“Targeted Device Family”修改为“iPhone”之外,是否还有其他必要的步骤来防止用户在他们的 iPad 上打开已经开发的 iPad 类/视图?
此外,用户(例如越狱设备)是否有可能在他们的 iPad 上以 iPad 模式进入应用程序?(如何)可以防止这种情况吗?
出于开发的原因,我开始开发一个通用的 iOS 应用程序,但只想先用 iPhone 版本启动。
除了在构建设置中将“Targeted Device Family”修改为“iPhone”之外,是否还有其他必要的步骤来防止用户在他们的 iPad 上打开已经开发的 iPad 类/视图?
此外,用户(例如越狱设备)是否有可能在他们的 iPad 上以 iPad 模式进入应用程序?(如何)可以防止这种情况吗?
您可以设置如下条件:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
- - 做一点事 -
}
并注释掉加载 iPad 类和视图的调用
除了修改“目标设备系列”属性之外,您不需要其他任何东西。我认为即使在越狱设备上也不太可能启动 iPad 模式,但例如,您可以从 iPhone 构建项目中删除 iPad 文件(及其依赖项)。我仍然认为这不是必要的步骤。
答案因您设置现有代码的方式而异。例如,如果您对当前硬件 Eg 执行运行时检查if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
并根据结果更改 UI,那么您将不得不重做一些代码,因为即使应用程序只有 iPhone 的接口,该条件仍然会在 iPad 上评估 true。
然后另一个选择是让你的类在接口之间拆分。如果做得好,这可能是最好的方法。我的意思是真正坚持 MVC 范式并分别制作两个接口,然后将每个接口链接到它自己的控制器对象,然后将尽可能多的可重用逻辑为您的应用程序放在一个普遍可访问的对象中。
如果您按照我提到的第二种方式完成此操作,那么您应该没有任何麻烦。只需将项目指向项目的 iPhone/iPad 版本的情节提要,即可加载正确的类文件等。这使我直接回答了您的问题。
只要您按照我列出的第二种方式设置项目,您真正需要做的就是修改“目标设备系列”。此外,不应该担心越狱用户会访问 iPad 文件。他们可以进入,但无论如何它们都已编译,99%的人不知道如何处理那一大堆乱码。
即使他们这样做了,我认为没有人会不遗余力地尝试寻找 iPad 版本的 iPhone 专用应用程序。他们知道,如果一个应用程序有一个完整的 iPad 版本,它只会在他们的 iPad 上运行。