添加子视图更改方向

时间:2012-09-09 21:34:46

标签: iphone ios uiview

  

可能重复:
  Orientation in a UIView added to a UIWindow

当我使用[[[UIApplication sharedApplication] keyWindow] addSubview:myView.view]将加载视图添加为子视图时(因此它位于所有视图的顶部),即使我的应用已锁定到横向,视图的方向也会以纵向显示。当我直接添加为添加子视图时,这不会发生。

知道我为什么出错了吗?

2 个答案:

答案 0 :(得分:0)

没有代码就很难分辨,但可能是因为当你直接向窗口添加子视图时,它不是你的根视图控制器视图的子视图,并且确实会获得方向通知。我要么避免直接将它添加到窗口的子视图中,要么如果必须,请注册方向通知,如下所示:

[[NSNotificationCenter defaultCenter] addObserver:myView
                                         selector:@selector(orientationChanged:)
                                             name:UIDeviceOrientationDidChangeNotification
                                            object:nil];  

然后将适当的方法添加到myView视图控制器中以进行处理。

答案 1 :(得分:0)

在没有代码的情况下也猜测,但另一个理论是拥有视图的ViewController仅对肖像响应- (BOOL)shouldAutorotateToInterfaceOrientation:的真值(我想很多xcode提供的模板vc代码执行此操作默认情况下)。

从提供的一点代码中,我们所讨论的ViewController可能叫做myView(如果我说得对,“myView”对于ViewController实例来说是一个糟糕的名字选择)。检查ViewController的shouldAutorotate实现...确保当待定位方向为横向时它回答“是”。