我有一个适用于iPhone和iPad的通用应用程序,带有单独的xib
对于iPad版本,我希望我的一个iPad xib处于横向模式。我已将其设置为模拟指标中的横向,(应用程序在摘要屏幕中设置为纵向),并且横向视图在运行时仍以纵向显示。我确定我在这里读到一个命名约定,该约定告诉应用程序xib处于格局状态,即:view1_one.xib~ipad-landscape
我尝试过使用屏幕旋转方法,但iOS 6屏幕旋转只是证明非常令人沮丧,因为我尝试了很多解决方案,所有这些都没有效果。我之前在iOS 6中完成了屏幕旋转,但是我使用了故事板并为我选择的视图子类化了导航控制器,我不知道如何使用此代码执行此操作,因为我从其他人那里选择了它
总而言之:如何让我的屏幕尊重我在界面构建器中创建的横向xib而不是以纵向显示
我想指出我在这里寻找解决方案并在发布此
之前花了很多时间答案 0 :(得分:3)
资源(包括xib)的命名约定指定了它们加载的设备类型。但是,这些对于特定方向不存在。 -landscape
不会做任何额外的事情(更具体地说,它可能会在iPhone上加载资源,这不是你想要的)。
至于处理方向更改,请确保同时实施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设置为子类而不是超类。
<强> EDIT2:强>
在Interface Builder中检查: