当我使用[[[UIApplication sharedApplication] keyWindow] addSubview:myView.view]
(以便它位于所有视图的顶部)将加载视图添加为子视图时,即使我的应用程序被锁定为横向,视图的方向也会以纵向显示。当我直接添加为添加子视图时,这不会发生。
知道为什么我要去哪里错了吗?
当我使用[[[UIApplication sharedApplication] keyWindow] addSubview:myView.view]
(以便它位于所有视图的顶部)将加载视图添加为子视图时,即使我的应用程序被锁定为横向,视图的方向也会以纵向显示。当我直接添加为添加子视图时,这不会发生。
知道为什么我要去哪里错了吗?
没有代码很难说,但这可能是因为当您将子视图直接添加到窗口时,它不是根视图控制器视图的子视图,并且确实会收到方向通知。我要么避免直接将其添加到窗口的子视图中,要么如果必须,注册方向通知,如下所示:
[[NSNotificationCenter defaultCenter] addObserver:myView
selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
然后将适当的方法添加到您的myView
视图控制器来处理它。
在没有代码的情况下也猜测,但另一个理论是拥有视图的 ViewController- (BOOL)shouldAutorotateToInterfaceOrientation:
只对纵向响应以真值(我认为 xcode 提供的模板 vc 代码的大部分默认情况下都会这样做)。
从所提供的少量代码来看,也许我们正在谈论的 ViewController 被称为 myView(如果我是对的,“myView”对于 ViewController 的实例来说是一个糟糕的名称选择)。检查 ViewController 的 shouldAutorotate 实现...确保当未来方向是横向时它回答 YES。