gpt4 book ai didi

ios - 如何限制 iOS 8 中 View Controller 的旋转?

转载 作者:行者123 更新时间:2023-11-28 21:43:02 24 4
gpt4 key购买 nike

我想为几个 View Controller 禁用 iOS 设备的自动旋转。就像我有几个 Controller 一样,我希望它只在纵向模式下显示。而其他 View Controller 在横向模式下。我使用了以下代码,但是这些永远不会调用委托(delegate)方法?

#pragma mark Orientation handling

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(BOOL)shouldAutorotate
{
return NO;
}

-(NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationMaskPortrait);
}

最佳答案

我使用以下方法强制设置某些选定 View 的纵向方向及其对我的工作,可能会对您有所帮助

1、创建一个全局flag

在您的 AppDelegate 方法中创建全局标志,以便您可以在任何 View Controller 中访问它。

在你的 AppDelegate.h 中

@property (assign) BOOL flagOrientationAll;

在你的 AppDelegate.m 中

@synthesize flagOrientationAll;

在您的 AppDelegate.m 中添加以下方法

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
if(flagOrientationAll == YES){
return UIInterfaceOrientationMaskAll; // All orientation support
} else {
return UIInterfaceOrientationMaskPortrait; // Set only one orientation you want
}
}

2、在ViewController.m中为你想要限制旋转添加如下代码

// set flag "flagOrientationAll" to rotate only one view in your particular view 

#import AppDelegate.h
-(void)viewWillAppear:(BOOL)animated
{
NSLog (@"webViewController -- viewWillAppear");
[super viewWillAppear:animated];

AppDelegate *delegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
delegate.flagOrientationAll = YES;
}

-(void)viewWillDisappear:(BOOL)animated
{
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
delegate.flagOrientationAll = NO;
}

这是我的帖子:How to set one of the screens in landscape mode in iphone?

如果您遇到任何问题,请告诉我!

关于ios - 如何限制 iOS 8 中 View Controller 的旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31339703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com