1

我想从纵向父级以横向模式加载 ViewController。父级已固定为纵向,它不会改变其方向,但是无论设备方向如何,从父级推送的子视图控制器也会加载纵向(如果我们再旋转设备几次,则为孩子正确设置方向)。那么如何在初始时间本身正确加载孩子。

或者

有什么方法可以以编程方式设置方向,以便我可以在 ViewWillAppear 方法中使用它。谢谢。

4

4 回答 4

3

在您的孩子 UIViewController 设置这两个方法:

- (BOOL)shouldAutorotate
{
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscapeLeft;
}

在父 UIViewController 做:

[self.navigationController presentViewController:controller animated:YES completion:nil];

代替:

[self.navigationController pushViewController:controller animated:YES];

如果您想在孩子中显示导航栏:

DetailViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
controller.title = @"Child";

您必须使用上面提到的两种方法将 UINavigationController 子类化,而不是在子视图控制器中。

MyNavigationController *nav = [[MyNavigationController alloc] initWithRootViewController:controller];

[self.navigationController presentViewController:nav animated:YES completion:nil];
于 2013-06-12T10:22:59.147 回答
3

试试这个示例项目............

https://www.dropbox.com/s/lrsz4dpeolpeu23/RotationDmeo.zip

于 2013-06-12T10:55:07.887 回答
0

如果我做对了,您只需将此方法添加到您的子视图控制器

- (BOOL)shouldAutorotate {
    return NO;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationLandscapeLeft / Right;
}

展示您的视图使用

[self presentViewController:viewController...]

您的视图以横向模式呈现。

于 2015-07-24T11:14:59.223 回答
0

在视图中使用这个已经出现或将出现,

[[UIDevice currentDevice]performSelector:@selector(setOrientation:) withObject:(__bridge id)((void *)UIInterfaceOrientationLandscapeRight)];

在此之前启用 .plist 中的所有 4 个方向

在 AppDelegate.m 上添加这个

- (NSUInteger)application:(UIApplication*)application
supportedInterfaceOrientationsForWindow:(UIWindow*)window
{
    UIViewController *cont=self.vc;

    if([cont isKindOfClass:[YourClass class]])
    {
         NSUInteger orientations =  UIInterfaceOrientationMaskLandscapeRight;

        NSLog(@"Landscape");

        return orientations;
   }

    NSUInteger orientations = UIInterfaceOrientationMaskPortrait;

    return orientations;
} 
于 2015-07-31T12:37:09.313 回答