1. 程序要要支持Iphone 和 ipad,所以首先必需创建一通用程序,这一操作只要在创建程序时在
devices那栏上勾选universal即可,完成后会发现有两个.xib文件,但只有一个viewController类.因为这是用一个ViewController控制两个.xib文件,苹果官方称最好分开控制 Iphone.xib和ipad.xib,也就是再写一个ViewController,但这样做也就像写两个应用程序一样的,只不过是同时进行
2. 由于Iphone5的屏幕要长一点,我也用同样的方法再建一个phone5的.xib文件,让它和ipad,其他类型的iphone关联到同一个viewController,在这里创建.xib文件时要注意来了,因为xcode没有单独创建.xib的操作(我没找到该操作),所以我们可以先建一个object-c的文件,设置它的父类为UIController 这样就会常见出一个.xib文件和一个.h及.m文件,我们只要用.xib文件,其他的删除。
3. 然后将该文件关联到同一个ViewController,操作:
先选中该Iphone5.xib文件 ,然后在 左边有个FileOWn 点击它,在最右边再点击show the identify inspector 配置其custom class为ViewController,则大功告成
4.完成上述操作后就可以用一个ViewController操作了,加载时加入些代码
如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
//下面的代码判断设备是否时IPhone5
BOOL iphone5 = [UIScreen instanceMethodForSelector:@selector(currentMode)]?CGSizeEqualToSize([[UIScreen mainScreen]currentMode].size, CGSizeMake(640, 1136)):NO;
//是Iphone系列还是Ipad系列
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
} else {
if (iphone5) {
// self.viewController = []
}
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
}
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
5.屏幕旋转时就不用多说了,原理一样,用另外的一个.xib显示就行了,本来ios中有个自适应属性,但只能支持ios6.0,而我们的软件要支持Ios5,此外自适应 对于复杂的屏幕也控制不了
6.当屏幕进行 旋转后加入下面的代码
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
//如果将要旋转到横屏
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
//加载横向的.xib文件
[[NSBundle mainBundle]loadNibNamed:<#(NSString *)#> owner:<#(id)#> options:<#(NSDictionary *)#>];
}else{
//加载纵向的.xib文件
[[NSBundle mainBundle]loadNibNamed:<#(NSString *)#> owner:<#(id)#> options:<#(NSDictionary *)#>];
}
}