由于Long标题表明我最近一直在与IOS 6 Orientations斗争。 我正在开发一个仅基于iPhone的当前项目,几乎所有的viewcontrollers都只支持纵向(默认方向)。 我有一个viewcontroller虽然我想给多个方向作为唯一的方向,独立。我该怎么做呢?这是我的方法。干杯
在“设置”中 - 选择除肖像底部向上以外的所有方向。
在Viewcontroller中,我想给出多个方向 - 这个代码是嵌入的
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
-(BOOL)shouldAutorotate
{
return YES;
}
对于其余的viewcontollers - 支持一个方向(默认方向)肖像:
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
-(BOOL)shouldAutorotate
{
return YES;
}
它不起作用。看起来似乎没有调用方法 - 但是项目和构建只是坚持设置中的选定方向。为什么这不起作用!!
任何帮助都将深表感谢。
答案 0 :(得分:2)
您可以阅读:
这就是我的所作所为:
在所有viewcontrollers中:
#pragma mark Orientation handling
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
}
-(BOOL)shouldAutorotate
{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
}
唯一的viewcontroller:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}
希望这会有所帮助..
答案 1 :(得分:0)
试试这个[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
您需要在构建阶段为此文件设置-fno-objc-arc
。
答案 2 :(得分:0)
-supportedInterfaceOrientations应该返回一个掩码,在你的情况下:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
答案 3 :(得分:0)
您需要为要以纵向显示的视图创建UINavigationController
子类。从iOS 6开始,视图控制器只查看父控制器或根控制器,以便轮换处理而不是您从描述中执行的视图控制器本身。
在navcontroller subclass.m中:
// Older versions of iOS (deprecated) if supporting iOS < 5
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return UIInterfaceOrientationIsPortrait(toInterfaceOrientation);
}
// >iOS6
- (BOOL)shouldAutorotate {
return YES;
}
// >iOS6
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}