在xcode中更改设备方向时,如何加载xib?

时间:2010-08-29 19:52:01

标签: objective-c cocoa-touch

如果更改设备的方向,我将如何加载新的xib?即,当设备变为横向时加载横向导向的xib,反之亦然,纵向加载。以及如何自动检测方向变化并从那里进行调整?

1 个答案:

答案 0 :(得分:7)

显然,我所要做的就是创建一个基于视图的app将shouldAutoRotateToInterfaceOrientaion设置为YES,并创建两个带有单独xib文件的uiviewcontroller子类,然后将其添加到app视图控制器:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:UIDeviceOrientationDidChangeNotification object:nil];

并将此方法添加到应用视图控制器中:

-(void)orientationChanged {
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
    if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown) {
        [[NSBundle mainBundle] loadNibNamed:@"Portrait" owner:self options:nil];
    }
    else {
        [[NSBundle mainBundle] loadNibNamed:@"Landscape" owner:self options:nil];
    }

}

就是这样,当旋转设备时,xib会以正确的方向自动加载。

编辑:你还需要以编程方式添加两个viewcontrollers(@property和@synthesize它们),以及IB中appviewcontroller.xib中的两个viewcontrollers,每个视图控制器的类名对应于你创建的每个xib的viewcontroller子类。然后添加一个视图将它连接到文件的所有者,并将IB中的出口连接到您在ib中创建的视图控制器,这应该是全部