ios开发屏幕问题

1. 程序要要支持Iphone 和 ipad,所以首先必需创建一通用程序,这一操作只要在创建程序时在

devices那栏上勾选universal即可,完成后会发现有两个.xib文件,但只有一个viewController.因为这是用一个ViewController控制两个.xib文件,苹果官方称最好分开控制 Iphone.xibipad.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 classViewController,则大功告成

 

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

 

    }

}

 

 

posted @ 2013-07-12 23:39  Forty_two  阅读(412)  评论(0编辑  收藏  举报