如何强制纵向? [关闭]
Posted
技术标签:
【中文标题】如何强制纵向? [关闭]【英文标题】:How to force portrait orientation? [closed] 【发布时间】:2014-05-22 10:24:36 【问题描述】:如果我的应用程序最初支持两个方向,如何在ios 7
中强制纵向?
【问题讨论】:
不清楚你能解释更多。整个应用只需要纵向模式吗 Force portrait orientation while pushing from landscape View Controller的可能重复 【参考方案1】:对于整个应用程序,打开项目文件,转到“常规”选项卡,更改设置:
或者直接在Info.plist文件上:
如果您只想在特定的视图控制器上使用它,请覆盖 supportedInterfaceOrientations
:
- (NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskPortrait;
你可以在官方UIViewController documentation阅读更多关于第二种方法的信息。也许,您会找到更适合您的具体问题的方法。
【讨论】:
简单而正确,但要注意 -(BOOL)shouldAutorotate 方法。它不能被覆盖,或者返回 YES,否则它将不起作用。【参考方案2】:UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:c animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
【讨论】:
可能这段代码不符合苹果的标准,不确定..但它很好的破解。 当我们使用此代码时,我们的应用将不会被 Apple 批准用于生产。 您能解释一下为什么会这样吗?此外,这些方法在 iOS 6 中已弃用。Apple 可能决定在 iOS 8 中删除它们。这不是 Apple 第一次弃用并在不久之后删除的方法。 @PrabhuNatarajan 你怎么能说它会被苹果拒绝,在那里你可以找到这样的声明 不适用于 iOS 8【参考方案3】:使用以下方法: 在您的应用委托中 .h
@interface PlayWithWSWithLibAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate>
BOOL flagOrientationAll;
@property (assign) BOOL flagOrientationAll;
在您的应用委托 .m 文件中添加以下方法
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
//NSLog(@"PlayWithWSWithLibAppDelegate -- supportedInterfaceOrientationsForWindow");
if(flagOrientationAll == YES)
return UIInterfaceOrientationMaskPortrait;
else
return UIInterfaceOrientationMaskAll;
在您想要为 iPhone 设备纵向和横向旋转的视图中实现以下方式
-(void)viewWillAppear:(BOOL)animated
self.tabBarController.delegate = self;
PlayWithWSWithLibAppDelegate *delegate = (PlayWithWSWithLibAppDelegate *) [[UIApplication sharedApplication] delegate];
delegate.flagOrientationAll = YES;
-(void)viewWillDisappear:(BOOL)animated
//NSLog(@"viewWillDisappear -- Start");
PlayWithWSWithLibAppDelegate *delegate = (PlayWithWSWithLibAppDelegate *)[[UIApplication sharedApplication] delegate];
delegate.flagOrientationAll = NO;
这是我的一些与您的问题相似的主题:iOS 7 Interface Orientation
【讨论】:
【参考方案4】:#import <objc/message.h>
objc_msgSend([UIDevice currentDevice], @selector(setOrientation:), UIInterfaceOrientationLandscapeRight);//here you may change your desired Orientation
【讨论】:
以上是关于如何强制纵向? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章