我有一个适用于iPhone和iPad的通用应用程序,带有独立的小臂
对于iPad版本,我希望我的iPad xib之一处于横向模式。我已将其设置为以模拟指标显示为横向(在摘要屏幕中,该应用程序设置为纵向),并且运行时横向视图仍以纵向显示。我确定我在这里阅读了一个命名约定,该约定告诉应用程序xib处于横向状态,即:view1_one.xib~ipad-landscape
香港专业教育学院尝试使用屏幕旋转方法,但事实证明,iOS 6屏幕旋转非常令人沮丧,因为我尝试了许多解决方案,但所有这些方法均无效。我之前在iOS 6中进行过屏幕旋转,但是我使用情节提要板并将子类化为我选择的视图的导航控制器,当我从其他人那里ip选择它时,我不知道如何使用此代码进行此操作
综上所述:如何使屏幕尊重我在界面构建器中创建的横向xib,而不是纵向显示
我要指出的是,我在这里搜索了一个解决方案,并在发布之前花了很多时间
最佳答案
资源(包括xib)的命名约定指定了将资源加载到哪种设备类型。但是,这些对于特定方向不存在。 -landscape
不会做任何额外的操作(更具体地说,它可能也会在iPhone上加载资源,这不是您想要的)。
http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/Introduction/Introduction.html#//apple_ref/doc/uid/10000051i-CH1-SW2
至于处理方向更改,请确保同时实现iOS 5和以下方法以及用于处理它们的iOS 6方法:
// Older versions of iOS (deprecated)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}
// iOS6
- (BOOL)shouldAutorotate {
return YES;
}
// iOS6
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
// Added after comment
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeLeft;
}
这是确保viewController仅横向加载的官方方法。
编辑:
我也添加了
preferredInterfaceOrientationForPresentation
方法。我个人不喜欢这种方法,但它会强制viewController以该方向显示,直到下一个方向更改为止。不好,但是它将帮助您查看定向方法是否被调用。也尝试在每种方法中设置一个断点。如果根本不调用它们,则问题可能出在子类上。确保情节提要中的viewController设置为子类而不是父类。
编辑2:
在Interface Builder中检查以下内容:
关于objective-c - 仅适用于iPad版本的Landscape Xib,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13801798/