ios开发屏幕问题

时间:2024-01-07 12:57:50

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 *)#>];

}

}