Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 添加子视图会更改方向_Iphone_Ios_Uiview - Fatal编程技术网

Iphone 添加子视图会更改方向

Iphone 添加子视图会更改方向,iphone,ios,uiview,Iphone,Ios,Uiview,可能重复: 当我使用[[[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)AutoRotateTointerFaceOrientation:
仅为纵向设置一个真值(我认为很多xcode提供的模板vc代码默认都是这样做的)


从提供的代码来看,我们谈论的ViewController可能称为myView(如果我说的没错,“myView”对于ViewController实例来说是一个糟糕的名称选择)。检查ViewController的shouldAutorotate实现…确保当待定向为横向时,它回答“是”。

相关问题:这是一个奇怪的构造,将视图添加为
keyWindow
的子视图,并且绑定到不接收通知事件。为什么不将其添加为视图控制器视图的子视图(在这种情况下,视图控制器将获得所有适当的旋转通知事件)。您可以围绕您的构造工作,但为什么要这样做?我的应用程序已固定为横向模式,那么这又有什么关系?即使设备未旋转,此问题仍然存在。