只有一个查看横向模式
我完成了我的iOS应用程序,但我只需要设置一个视图到横向模式,剩下的视图只能在纵向模式下看到。
我正在使用Xcode 5.1,并通过从右侧面板放置在Storyboard View Controller中创build了所有的视图,所以如果您要告诉我在某处编写一些代码,请告诉我在哪里需要编写代码。
我在这里阅读一个解决schemeUINavigationController强制旋转,但我不知道在哪里写代码。 我需要手动创build一个UIViewController
吗?
我会假设你在这里瞄准iOS 7(使用XCode 5.1,我想我是对的)。
首先,你必须明白,为了打开40多个景观中的一个,你的应用应该允许横向和纵向的界面方向。 这是默认情况下,但您可以在您的目标的设置, General
选项卡, Deployment Info
部分检查它(见下面的截图)。
然后,因为您允许横向和纵向整个应用程序,你将不得不告诉每个只有肖像的UIViewController
,它不应该自动旋转,添加此方法的实现:
- (BOOL)shouldAutorotate { return NO; }
最后,对于您的特定于横向的控制器,并且因为您说您正在以模态方式呈现它,您可以只实现这些方法:
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeLeft; // or Right of course } - (UIInterfaceOrientationMask)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; }
希望这会有所帮助,
迅速
AppDelegate.swift
internal var shouldRotate = false func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { return shouldRotate ? .allButUpsideDown : .portrait }
你的风景视图控制器
let appDelegate = UIApplication.shared.delegate as! AppDelegate appDelegate.shouldRotate = true // or false to disable rotation
Objective-C的
AppDelegate.h
@property (assign, nonatomic) BOOL shouldRotate;
AppDelegate.m
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return self.shouldRotate ? UIInterfaceOrientationMaskAllButUpsideDown : UIInterfaceOrientationMaskPortrait; }
你的风景视图控制器
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate; [appDelegate setShouldRotate:YES]; // or NO to disable rotation
你应该宣布shouldRotate作为内部摆脱公共财产在没有公共类警告。 internal var shouldRotate = false
要跟踪雅罗斯拉夫的解决scheme,为了只允许在一个视图中旋转到横向模式,横向视图控制器应该在其viewDidLoad方法中将shouldRotate设置为YES,并在其viewWillDisappear中将其设置为YES。
如果您只在viewDidLoad中将“设置旋转”设置为“是”,则在现有此视图控制器之后,所有其他视图控制器也将旋转。 所以,你必须在其viewWillDisappear中将其设置为NO才能限制纵向视图的旋转。