我有兩個視圖控制器嵌入在導航控制器中,我的第一個視圖控制器允許旋轉,而我的第二個視圖控制器應始終以縱向模式打開,例如,即使我在第一視圖控制器中處於橫向模式我想打開我的第二個人像,如何強制我的視圖控制器始終以縱向模式打開
我通過先推動segue來呈現第二個視圖控制器。
我有兩個視圖控制器嵌入在導航控制器中,我的第一個視圖控制器允許旋轉,而我的第二個視圖控制器應始終以縱向模式打開,例如,即使我在第一視圖控制器中處於橫向模式我想打開我的第二個人像,如何強制我的視圖控制器始終以縱向模式打開
我通過先推動segue來呈現第二個視圖控制器。
你將不得不實施shouldAutorotate
第二VC
你目前的第二VC(縱向)就在調用
if([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft || [UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger: UIInterfaceOrientationPortrait] forKey:@"orientation"];
}
解決方案1:創建一個自定義的UINavigationController子類,並重寫這些方法這樣的:
@interface LockedNavigationViewController()
@end
@implementation LockedNavigationViewController
-(BOOL)shouldAutorotate {
return UIInterfaceOrientationMaskPortrait;
}
#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
- (NSUInteger)supportedInterfaceOrientations
#else
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
#endif
{
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
@end
可以在烏爾AppDelegate類使用此方法,並與布爾VAR
-(NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if(self.isDisplayInPoratrait){
return UIInterfaceOrientationMaskPortrait;
else
// return ur required orientation
}
self.isDisplayInPoratrait
保持在AppDelagate
集類這個變量是其中U想呈現在肖像聲明布爾變量。放置在類此方法其中U灣呈現在肖像
-(BOOL)shouldAutorotate {
return NO;
}
-(UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeLeft;
}
的可能的複製[如何強制視圖控制器留在肖像模式?](http://stackoverflow.com/questions/16720968/how-to -force-view-controller-to-stay-in-portrait-mode) –
[如何在iOS 6中強制UIViewController以Portait方向](http://stackoverflow.com/questions/12520030/how-to -force-A-的UIViewController到波泰特方位用在-IOS-6) – kb920