2

我必须为 ios 手机和平板电脑开发一个应用程序。应用程序逻辑相同,而 UI 完全不同。我想知道我应该如何处理这个问题:为两者制作 1 个大应用程序,或者为手机应用程序和平板电脑应用程序(然后将 2 个 ipa 作为市场上的 1 个应用程序上传)。

当我制作 1 个应用程序时,我应该检查它是否是代码中的手机或平板电脑以重定向到适当的活动。我还应该包含兼容性代码以使其能够为手机编译。如果我要制作 2 个应用程序,我不需要那个检查,我也不需要包含兼容性代码,所以应用程序会小很多。但在这种情况下,我将不得不在开发过程中不断地将应用程序逻辑从一个项目复制/粘贴到另一个项目。

所以这就是我想知道的原因,在这种情况下最好的做法是什么?我一直在搜索这方面的信息,但我只找到有关如何管理不同 xml 布局的文章,或者其中没有太多信息的文章。

我用谷歌搜索,发现这里有一篇关于 android 的文章Android app for phone and tablet: 1 or 2 apps?

但我需要了解ios 应用程序

4

2 回答 2

2

如果您想构建两个应用程序或通用应用程序,这实际上更像是一个营销问题。您是否希望用户只需购买一次并在两个平台上运行?iPad 版本是否做得更多,您宁愿收取额外费用?

一旦你决定在需要的地方共享代码很容易,如果你有两个单独的应用程序,你可以为 iPad 和 iPhone 分别创建一个目标 - 每个目标都可以共享任何你喜欢的代码、资源或数据模型. 让 iPad 和 iPhone 版本继承的最小应用程序委托也是一个好主意。

如果它是通用的,那么您最终可能会检查您所在的平台,但通常一旦您加载了主界面文件,您就不需要做太多的检测。

于 2012-09-27T06:05:07.077 回答
1

将此代码放入您的应用委托类中,然后

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    UINavigationController *navController;

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {

         _iPhonehomeScreen = [[NFHomeScreen_iPhone alloc] initWithNibName:@"NFHomeScreen_iPhone" bundle:nil];
        navController = [[UINavigationController alloc] initWithRootViewController:_iphonehomeScreen];
        [navController setNavigationBarHidden:YES];
        self.window.rootViewController = navController;
    }
    else {
        _iPadhomeScreen = [[NFHomeScreen_iPad alloc] initWithNibName:@"NFHomeScreen_iPad" bundle:nil];
        navController = [[UINavigationController alloc] initWithRootViewController:_iPadhomeScreen];
        [navController setNavigationBarHidden:YES];
        self.window.rootViewController = navController;

    }

    [navController release];
}

现在使用两个用于 iPad 和 iPhone 的 xib 以及相同的通用 .h 和 .m 文件。

于 2012-09-27T06:10:31.830 回答