xcode 4.5如何在发布时选择故事板

Xap*_*ann 42 xcode storyboard uistoryboard xcode4.5

试图使我的应用程序适用于iPhone 5和iPhone 4/4s.我尝试了"AutoLayout",但似乎不适用于我的应用程序也读取它在iOS 5中不受支持.AutoLayout特别在具有UIScrollview和UIPicker的视图控制器上失败,该UIPicker在代码中重新调整大小.有两个故事板一个4英寸和一个3.5英寸似乎是要走的路.

两个Storyboard aproch似乎是我的解决方案.所以这给我留下了两个问题;

  1. 代码应该在哪里检测,如果它是4/4s/5去?我假设在didFinishLaunchingWithOptions方法的appDelegate.m中

  2. 如何更改"主要故事板"?

小智 61

这是一个很好的问题.

你需要做的是,

  1. 选择当前的4/4s故事板,转到文件,复制,然后给它一个iPhone 5特定名称. 确保选中Target和您的应用名称.

  2. 接下来,您必须在故事板中选择场景,并在"属性"检查器中将大小更改为"Retina 4全屏".这允许您重新排列此显示的所有内容.

  3. 最后在应用程序中,didFinishLaunchingWithOptions将以下代码粘贴到您为4英寸故事板提供的故事板名称.

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        UIStoryboard *storyBoard;
    
        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width * scale, result.height * scale);
    
        if(result.height == 1136){
            storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone_5" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }
    }
    
    return YES;
    }
    
    Run Code Online (Sandbox Code Playgroud)

如果有人不知道如何做第1步,请执行以下操作.

  1. 转到项目目录并复制粘贴MainStoryboard.storyboard并重命名新故事板MainStoryboard5.storyboard.

  2. MainStoryboard5.storyboard通过右键单击Project并单击,在项目中添加此新故事板(在Xcode中)Add Files to ....

  3. 现在我们在xcode中有两个故事板.

小费

完成上述所有操作后,您可能必须使用"产品>清洁"才能使用此功能.


Leo*_*die 7

目前唯一的方法是检查你是否使用iPhone 5是[UIScreen mainScreen] bounds][[UIScreen mainScreen] scale].

BOOL isIphone5 = (([[UIDevice currentDevice] userInterfaceIdiom] 
== UIUserInterfaceIdiomPhone) && (([UIScreen mainScreen].bounds.size.height * 
[[UIScreen mainScreen] scale]) >= 1136));
Run Code Online (Sandbox Code Playgroud)

这仅在您至少Default-568h@2x.png为应用程序添加了启动图像时才有效.否则这将总是返回false.(因为如果您没有启动图像,屏幕将被设置为letterboxed)

要将故事板设置为iPhone 5版本,您可能需要查看此问题