如何通过MMDrawerController禁用旋转特定ViewControllers?
- 内容介绍
- 文章标签
- 相关推荐
本文共计436个文字,预计阅读时间需要2分钟。
在您的应用中使用MMDrawerController时,若遇到禁止旋转的问题,以下是一些可能的解决方法:
1. 检查ViewController旋转设置: 确保在您的主ViewController中,旋转设置与MMDrawerController兼容。您可以在ViewController中设置支持的旋转方向,如下所示:
swift override var supportedInterfaceOrientations: UIInterfaceOrientationMask { return .portrait }
2. 修改MMDrawerController的旋转设置: 在MMDrawerController中,可以通过设置`drawersDisplayAnimation`的`shouldAutorotate`属性来控制旋转:
swift drawerController.drawersDisplayAnimation.shouldAutorotate=true
3. 调整AppDelegate中的rootViewController: 如果您在AppDelegate中设置了rootViewController,确保它也支持旋转:
swift let rootVC=MMDrawerViewController(rootViewController: ViewController()) rootVC.leftDrawerViewController=LeftDrawerViewController() application.windows.first?.rootViewController=rootVC
4. 检查Storyboard旋转设置: 如果您使用Storyboard,检查Storyboard中ViewController的旋转设置是否正确。
5. 使用OrientationLock类: 创建一个自定义类,用于控制屏幕旋转:
swift import UIKit
class OrientationLock: NSObject { private static var lockOrientation: UIInterfaceOrientationMask?
class func lock(_ orientation: UIInterfaceOrientationMask) { lockOrientation=orientation }
class func unlock() { lockOrientation=nil }
class func lockedOrientation() -> UIInterfaceOrientationMask? { return lockOrientation } }
OrientationLock.lock(.portrait)
通过以上方法,您应该能够解决使用MMDrawerController时遇到的禁止旋转问题。
如何解决《使用MMDrawerConroller如何禁用旋转是一些ViewControllers?》经验,请问有什么解决方案?我在我的应用程序中使用MMDrawerController从这个链接我在AppDelegate中设置了根ViewController:
self.leftDrawerCOntroller= [[LeftDrawerViewController alloc] init]; self.homeViewCOntroller= [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; self.navigatiOnController= [[UINavigationController alloc] initWithRootViewController:self.homeViewController]; // DrawerViewController setup self.drawerCOntroller= [[MMDrawerController alloc] initWithCenterViewController:self.navigationController leftDrawerViewController:self.leftDrawerController]; [self.drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll]; [self.drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll]; [self.drawerController setDrawerVisualStateBlock:^(MMDrawerController *drawerController, MMDrawerSide drawerSide, CGFloat percentVisible) { MMDrawerControllerDrawerVisualStateBlock block; block = [[DrawerVisualStateManager sharedManager] drawerVisualStateBlockForDrawerSide:drawerSide]; if (block) { block(drawerController, drawerSide, percentVisible); } }]; [self.window setRootViewController:self.drawerController];我想在特定的ViewController中禁用旋转,我调用这些方法,它们永远不会被调用,视图仍然会旋转:
// ViewController.m-(BOOL)shouldAutorotate { return NO;}- (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait;}我想问题来自rootViewController,这是MMDrawerViewController!我已经检查这个和这个和这个,但没有任何帮助.
本文共计436个文字,预计阅读时间需要2分钟。
在您的应用中使用MMDrawerController时,若遇到禁止旋转的问题,以下是一些可能的解决方法:
1. 检查ViewController旋转设置: 确保在您的主ViewController中,旋转设置与MMDrawerController兼容。您可以在ViewController中设置支持的旋转方向,如下所示:
swift override var supportedInterfaceOrientations: UIInterfaceOrientationMask { return .portrait }
2. 修改MMDrawerController的旋转设置: 在MMDrawerController中,可以通过设置`drawersDisplayAnimation`的`shouldAutorotate`属性来控制旋转:
swift drawerController.drawersDisplayAnimation.shouldAutorotate=true
3. 调整AppDelegate中的rootViewController: 如果您在AppDelegate中设置了rootViewController,确保它也支持旋转:
swift let rootVC=MMDrawerViewController(rootViewController: ViewController()) rootVC.leftDrawerViewController=LeftDrawerViewController() application.windows.first?.rootViewController=rootVC
4. 检查Storyboard旋转设置: 如果您使用Storyboard,检查Storyboard中ViewController的旋转设置是否正确。
5. 使用OrientationLock类: 创建一个自定义类,用于控制屏幕旋转:
swift import UIKit
class OrientationLock: NSObject { private static var lockOrientation: UIInterfaceOrientationMask?
class func lock(_ orientation: UIInterfaceOrientationMask) { lockOrientation=orientation }
class func unlock() { lockOrientation=nil }
class func lockedOrientation() -> UIInterfaceOrientationMask? { return lockOrientation } }
OrientationLock.lock(.portrait)
通过以上方法,您应该能够解决使用MMDrawerController时遇到的禁止旋转问题。
如何解决《使用MMDrawerConroller如何禁用旋转是一些ViewControllers?》经验,请问有什么解决方案?我在我的应用程序中使用MMDrawerController从这个链接我在AppDelegate中设置了根ViewController:
self.leftDrawerCOntroller= [[LeftDrawerViewController alloc] init]; self.homeViewCOntroller= [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; self.navigatiOnController= [[UINavigationController alloc] initWithRootViewController:self.homeViewController]; // DrawerViewController setup self.drawerCOntroller= [[MMDrawerController alloc] initWithCenterViewController:self.navigationController leftDrawerViewController:self.leftDrawerController]; [self.drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll]; [self.drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll]; [self.drawerController setDrawerVisualStateBlock:^(MMDrawerController *drawerController, MMDrawerSide drawerSide, CGFloat percentVisible) { MMDrawerControllerDrawerVisualStateBlock block; block = [[DrawerVisualStateManager sharedManager] drawerVisualStateBlockForDrawerSide:drawerSide]; if (block) { block(drawerController, drawerSide, percentVisible); } }]; [self.window setRootViewController:self.drawerController];我想在特定的ViewController中禁用旋转,我调用这些方法,它们永远不会被调用,视图仍然会旋转:
// ViewController.m-(BOOL)shouldAutorotate { return NO;}- (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait;}我想问题来自rootViewController,这是MMDrawerViewController!我已经检查这个和这个和这个,但没有任何帮助.

