为了账号安全,请及时绑定邮箱和手机立即绑定

如何在iOS中处理不同的方向

如何在iOS中处理不同的方向

iOS
鸿蒙传说 2019-09-26 10:48:07
添加:您可以在github ios6rotations上访问此项目抱歉,有人问有关iOS 6屏幕旋转的问题,但这确实让我很痛苦。而且我仍然无法完全理解它-由于某些原因,它在某些情况下的行为有所不同。我的测试应用程序中具有以下简单的视图层次结构: 我要实现的目标是- 将蓝色控制器仅横向放置,将红色控制器仅纵向放置。我有一个UINavigationController的子类,里面有这样的代码:@implementation CustomNavController- (BOOL)shouldAutorotate{     return [[self.viewControllers lastObject] shouldAutorotate];}- (NSUInteger)supportedInterfaceOrientations{     return  [[self.viewControllers lastObject] supportedInterfaceOrientations];}- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {     return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];}@end在我的蓝色控制器中,我实现了这一点:- (BOOL)shouldAutorotate {     return YES;}- (NSUInteger)supportedInterfaceOrientations {     return UIInterfaceOrientationMaskLandscape;}在红色控制器中:- (BOOL)shouldAutorotate {     return YES;}- (NSUInteger)supportedInterfaceOrientations {     return UIInterfaceOrientationMaskPortrait;}现在,我有以下行为:应用在横向模式下启动(确定)当我按下按钮时,我的红色控制器也按横向显示(这不行,因为必须在“人像”中显示)它成功旋转为纵向但不向后旋转为横向如果我将红色控制器留在人像模式下,则我的蓝色控制器(仅限横向)会以人像模式显示。PS我所有的旋转方法(上面发布的)都被正常调用(顺便说一下,为什么这些方法在每次屏幕转换时都会被调用多次-5-6次)- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 不被推叫所有(除portraitUpsideDown外)方向都包含在plist中。问题是-如何在每个控制器中强制旋转到支持的方向?我建议您在此处发布(作为答案)任何100%正常工作的代码来处理ios6中的旋转(例如,如果您的iPad使用SplitController的话)-我会将这个问题保留在收藏夹中,以在需要时将它们全部放在一个位置处理一些特定情况。干杯!添加:请不要将此作为从风景到肖像的答案发布,我希望有一种更优雅的方法。
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

我的两分钱价值。

您可以快速显示一个空的透明模式视图,然后将其关闭,这可以作为快速解决方法,方法是在ViewController和ViewControllerSecond类的ViewDidLoad:或viewWillAppear:上。

此外,在情节提要中,您可以将ViewController类的方向设置为在视觉上呈现风景


查看完整回答
反对 回复 2019-09-26
?
MYYA

TA贡献1868条经验 获得超4个赞

使用此行以编程方式更改方向... 工作100%

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

并且在那时添加此行时,会出现一个警告,要删除此警告,只需在实现文件的顶部添加以下代码。

@interface UIDevice (MyPrivateNameThatAppleWouldNeverUseGoesHere)- (void) setOrientation:(UIInterfaceOrientation)orientation;@end

然后在波纹管方法中,如果需要,只需编写此代码。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    // Return your supported orientations

 if (currentMainView==blueOne) {
        return toInterfaceOrientation== UIInterfaceOrientationPortrait;
    }}


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 544 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信