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似乎是我的解决方案.所以这给我留下了两个问题;
代码应该在哪里检测,如果它是4/4s/5去?我假设在didFinishLaunchingWithOptions方法的appDelegate.m中
如何更改"主要故事板"?
小智 61
这是一个很好的问题.
你需要做的是,
选择当前的4/4s故事板,转到文件,复制,然后给它一个iPhone 5特定名称. 确保选中Target和您的应用名称.
接下来,您必须在故事板中选择场景,并在"属性"检查器中将大小更改为"Retina 4全屏".这允许您重新排列此显示的所有内容.
最后在应用程序中,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步,请执行以下操作.
转到项目目录并复制粘贴MainStoryboard.storyboard
并重命名新故事板MainStoryboard5.storyboard
.
MainStoryboard5.storyboard
通过右键单击Project并单击,在项目中添加此新故事板(在Xcode中)Add Files to ....
现在我们在xcode中有两个故事板.
小费
完成上述所有操作后,您可能必须使用"产品>清洁"才能使用此功能.
目前唯一的方法是检查你是否使用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版本,您可能需要查看此问题
归档时间: |
|
查看次数: |
25262 次 |
最近记录: |