将 iPad 应用程序转换为通用或重写

Posted

技术标签:

【中文标题】将 iPad 应用程序转换为通用或重写【英文标题】:Convert iPad app to universal or rewrite 【发布时间】:2012-03-20 21:50:05 【问题描述】:

我知道可以将 iPad 应用程序转换为通用应用程序,我的问题是是否值得。

该应用所做的只是显示一个初始屏幕,其中包含使用 UDP 广播检测到的服务器列表。一旦用户单击一个,它就会从该服务器加载一个页面到 UIWebViewControl。就是这样。这很简单。我已经研究过将现有的 iPad 应用程序转换为通用应用程序,但我不太喜欢这个过程。我的主要问题是在没有故事板便利的情况下理解界面构建器,尤其是原始编码器设置它的方式。我也不确定如何让应用程序为 iPhone / iPod 加载与 iPad 不同的视图。

话虽如此,我应该转换应用程序还是重新编写它?

【问题讨论】:

【参考方案1】:

您的通用转换应该毫不费力。您的 iPad 用户会欣赏这项工作。但除非您计划添加一些重大的 UI 更改,否则一定要转换它,在这些更改中重写将是有益的。

在从 iPhone 代码中确定 iPad 代码的简单方法中,使用:

#define IDIOM    UI_USER_INTERFACE_IDIOM()
#define IPAD     UIUserInterfaceIdiomPad
#define IPHONE   UIUserInterfaceIdiomPhone

关于上述IDIOM,我看到Apple 在ios 5.1 中使用了以下内容:

[[UIDevice currentDevice] userInterfaceIdiom]

所以你也可以使用

#define IDIOM    [[UIDevice currentDevice] userInterfaceIdiom]

示例

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    if ( IDIOM == IPAD ) 
        /*  Device is an iPad, so let the interface rotate.  */
        return YES;
    else
        /*  Device is an iPhone / iPod touch, so do not allow the interface rotate.  */
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    
    return YES;

【讨论】:

我遇到的问题不一定是区分代码。我对此没意见,我遇到的问题是在 iPhone 的应用程序中添加视图并让它加载它们。我尝试创建一个名为“SelectServerViewController~iphone.xib”的新视图,其中 iPad 的主视图称为“SelectServerViewController.xib”。当我在 iPad 模拟器上运行应用程序时,一切都按预期工作。当我在 iPhone 模拟器上运行它时,我得到一个纯黑的屏幕,即使我将视图的颜色设置为绿色。除非我遗漏了什么,否则这应该可行。 iPad 用户会注意到差异吗?如果我重写它,那么我会作为一个通用应用程序这样做,然后将它作为 iPad 应用程序的更新发布,这样他们就不必再次购买它。除非我遗漏了一些东西,否则他们应该不会注意到其他区别,除了它也会在他们的 iPhone 上运行,对吧? 如果您将应用程序“转换”为 Universal,那么您只需更改代码以确保为 iPad 布局修改框架等。 iPhone 用户不会看到差异。您只需将转换后的应用程序作为更新上传,这样当前用户就不必购买它——即使是那些拥有 iPad 的用户。 它已经是一个 iPad 应用程序,我也希望能够将它部署在 iPhone 上。我已将构建目标更改为使用 iPhone / iPad,并告诉 info.plist 使用我的新 xib 作为“主 nib 文件基本名称(iPhone)”,所以我期待的是绿屏,而不是黑屏,除非我'我仍然缺少一些东西。 iPad 的相同步骤 -> iPhone 转换。您需要确保您正在加载 iPhone 版本的视图(在您的情况下可能来自 XIB)。【参考方案2】:

如果应用程序那么小,请从头开始。如果您认为值得这样做,您可以复制大部分旧代码。

【讨论】:

以上是关于将 iPad 应用程序转换为通用或重写的主要内容,如果未能解决你的问题,请参考以下文章

将 iPad 应用程序转换为 iPhone?

ios将ipad应用程序转换为通用显示此错误笔尖但未设置视图出口

将 iPad 应用程序转换为通用应用程序的 iOS 不显示 iPhone 的 appIcon

Xcode 7.3 如何将我现有的 iPhone 应用程序转换为通用应用程序,以便在 iOS 中与 iPad 一起使用

将 iphone 应用程序转换为 iPad

将 iPhone 应用程序转换为 iPad,然后在 iPad 中使用 splitview?