【发布时间】:2015-10-23 20:56:48
【问题描述】:
我有一个 9-10 个屏幕的应用。我将UINavigationController 嵌入到我的视图控制器中。我有几个视图控制器,我只想设置纵向:这意味着旋转设备不应该将这些视图控制器旋转到横向模式。我尝试了以下解决方案:
第一:
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
但屏幕仍会旋转为横向。
第二:
我创建了一个自定义视图控制器类为PortraitViewController,并在PortraitViewController.m中添加了以下代码
@interface PortraitViewController ()
@end
@implementation PortraitViewController
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
//Here check class name and then return type of orientation
return UIInterfaceOrientationMaskPortrait;
}
@end
之后我将PortraitViewController.h 实现为基类
#import <UIKit/UIKit.h>
#import "PortraitViewController.h"
@interface Login : PortraitViewController
@end
它根本不起作用,仍然允许视图控制器在横向模式下旋转。
还有其他解决方案我正在使用 iOS 8 并且不希望 viewcontroller 在横向模式下旋转吗?
编辑: 是否可以仅对某些视图控制器具有横向方向,并强制其他视图控制器方向坚持纵向?
【问题讨论】:
-
前两行你在哪里写的?
-
在 ViewDidLoad@iAnurag
-
@JulianM 发布了正确答案。但是,您在应用程序的连贯性方面承担了一些风险,因为隐藏的视图控制器不会收到方向更改消息。您应该考虑重新设计您的界面并微调您的用户体验,
-
@TechGuy 你还有什么问题吗
标签: ios objective-c iphone ipad rotation