修复横向模式下的旋转问题
Posted
技术标签:
【中文标题】修复横向模式下的旋转问题【英文标题】:Fix rotation issue in landscape mode 【发布时间】:2016-03-31 08:31:51 【问题描述】:我有一个使用 AVCapturesession 捕获图像的应用程序,我有一个视图控制器,里面有一个 UIView,我在这个视图中运行会话。
当我的应用程序以纵向模式加载时,一切都很好,它会打开全屏并在旋转到横向模式时也保持全屏,因为我的视图用于捕获图像,所以我不允许仅旋转 UIView捕捉图像一切正常。
唯一的问题是,当我的应用以横向模式打开时,它不是全屏的,一旦我将其旋转到纵向,它就会变成全屏,然后回到横向时它仍然是全屏。
我该如何解决这个问题,或者有没有办法强制您的 ios 应用始终以纵向模式打开,然后让它旋转?
【问题讨论】:
【参考方案1】:我遇到了同样的问题。你应该在你的应用委托类中实现这个方法。这是示例。希望这是您所需要的。
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window
if([window.rootViewController isKindOfClass:[HRMHomeViewController class]])
id homeViewController = (HRMHomeViewController*)window.rootViewController;
if ([[homeViewController presentedViewController]
isKindOfClass:[HRMCapturedScreenViewController class]])
return UIInterfaceOrientationMaskPortrait;
return UIInterfaceOrientationMaskAll;
使用此方法,您的相机层的框架将根据方向旋转
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration
[super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation
duration:duration];
self.captureManager.cameraLayer.frame = self.videoView.bounds;
UINavigationController
中有一些方法可以提供帮助。这里有两种方法,或者创建 UINavigationController
的类别或继承它。
- (UIInterfaceOrientationMask)navigationControllerSupportedInterfaceOrientations:(UINavigationController *)navigationController
- (UIInterfaceOrientation)navigationControllerPreferredInterfaceOrientationForPresentation:(UINavigationController *)navigationController
【讨论】:
以上是关于修复横向模式下的旋转问题的主要内容,如果未能解决你的问题,请参考以下文章