如果更改设备的方向,我将如何加载新的xib?即,当设备变为横向时加载横向导向的xib,反之亦然,纵向加载。以及如何自动检测方向变化并从那里进行调整?
答案 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中创建的视图控制器,这应该是全部