我已经有一个在iPhone 4和iPad上正常运行的项目。现在我想让该项目与iPhone 5(4英寸)兼容。
我尝试使用“使用自动布局”,但它无效。
我的Xcode版本是4.5版(4G182)。
我在网上搜索过但找不到任何线索。
如果有人已经解决了这个问题,请指导我。
答案 0 :(得分:4)
在名为Default-568h@2x.png的项目中放入iPhone 5的默认图像。 之后,iPhone 5模拟器启动了我的应用程序全屏。
根据您的布局,您可能不需要自动布局。我可以用IB中的自动调整设置解决所有布局问题。最后它很简单。我有四种问题:
我在现有项目中采用了这种方式。在下一个项目中,我将检查自动布局功能。
最佳, 本杰明
答案 1 :(得分:3)
我不建议创建单独的xib文件,这就是我所做的: 1.添加4英寸启动画面 - 如果你想使用所有iPhone 5屏幕,这是必须的,没有其他设置。 2.如果您正在使用xib文件,只需使用界面构建器打开它并选择每个视图按钮等,并将其设置为动态放置(使用标尺选项卡)。注意设置窗口也要伸展。 3.如果您对视图进行编码,请检查您是否动态设置了地点和大小。
请注意“自动布局”不向后兼容所以它不会在iOS6之前的iOS版本上运行(它只会崩溃)!如果您从头开始,但对于不太好的旧应用程序,这可能很有用。
答案 2 :(得分:1)
您是否尝试过将名为Default-568h@2x.png的新启动图像添加到项目中?
答案 3 :(得分:1)
可能的解决方案之一(可能不是最好的解决方案)是根据屏幕大小加载不同的.xib文件。这样您就可以保存与以前iOS版本(< 6.0)的兼容性。
您可以添加一个类别来选择正确的.xib文件,而不是initWithNibName:
@implementation UIViewController (iPhone5Support)
-(id) initAutomaticallyWithNibName:(NSString *)nibNameOrNil orIOS6NibName:(NSString*) IOS6NibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
BOOL isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136));
if (isiPhone5==NO) {
self = [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
} else {
self = [self initWithNibName:IOS6NibNameOrNil bundle:nibBundleOrNil];
if (self==nil) { NSLog(@" initAutomaticallyWithNibName ERROR - nil for io6 nib name"); }
}
return self;
}
@end
使用它:
UIViewController *controller = [[UIViewController alloc] initAutomaticallyWithNibName:@"UIViewControllerXibName" orIOS6NibName:@"UIViewControllerXibName_4inch" bundle:nil];
(不要忘记为同一个控制器创建2个xib文件)