从视图控制器控制自动旋转,而无需修改应用程序的其余部分
Posted
技术标签:
【中文标题】从视图控制器控制自动旋转,而无需修改应用程序的其余部分【英文标题】:Control autorotation from a view controller without modifying the rest of the app 【发布时间】:2014-03-24 23:12:54 【问题描述】:我正在开发一个 ios 框架。它包含一个视图控制器,可以由将使用我的框架的应用程序以模态方式显示。我无权访问应用程序代码,只有我的框架。我想在显示我的视图控制器时防止自动旋转。这可以做到吗?我尝试在我的 VC 中从 shouldAutorotateToInterfaceOrientation:
返回 NO
,但没有被调用。
【问题讨论】:
如果您使用的是 iOS 6.0 或更高版本,则应该是 shouldAutorotate 函数,因为 shouldAutorotateToInterfaceOrientation: 已被弃用 【参考方案1】:您可以将此代码添加到您的 AppDelegate。它将允许其他 viewController 响应自动旋转调用。
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
/* This is in order to allow views that do not support landscape mode to be able to load in
*/
return UIInterfaceOrientationMaskAll;
此外,在 iOS 6.0 及更高版本中,shouldAutorotateToInterfaceOrientation:
方法已被弃用。可以用以下方法代替:
- (NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskPortrait;
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
return UIInterfaceOrientationPortrait;
- (BOOL) shouldAutorotate
return YES;
【讨论】:
问题是我无权访问应用程序的代码,包括应用程序委托。我在我的库中提供了一个应用程序使用的视图控制器。我需要在显示视图控制器时防止旋转。 我假设您知道谁可以访问 appDelegate,并要求他/她将该代码添加到其中。然后如上所述,您的正常自动旋转功能应该可以工作。除非该特定方法是 appDelegate,否则它将不起作用。我刚刚检查过了。以上是关于从视图控制器控制自动旋转,而无需修改应用程序的其余部分的主要内容,如果未能解决你的问题,请参考以下文章
将数据从一个视图控制器传递到下一个视图控制器,而无需在 swift 中进行 segue