Ios UIView中心位于;“方向错误”;

Ios UIView中心位于;“方向错误”;,ios,cocoa-touch,Ios,Cocoa Touch,我有一些真正的问题来理解为什么我的视图中心会这样做,完全放弃了设备的方向(我其他方面的好谷歌技能一无所获)。。。我了解框架、边界和中心如何相互关联/超级视图等() 因此,我有一些视图控制器(称它们为a&B)B是由A使用“封面垂直”过渡(实际上没有那么重要,但谁知道…)以“模式”呈现的 现在,运行以下代码 self.view.center = CGPointMake(self.view.frame.size.width * 0.5f, self.view.frame.size.height * 0

我有一些真正的问题来理解为什么我的视图中心会这样做,完全放弃了设备的方向(我其他方面的好谷歌技能一无所获)。。。我了解框架、边界和中心如何相互关联/超级视图等()

因此,我有一些视图控制器(称它们为a&BB是由A使用“封面垂直”过渡(实际上没有那么重要,但谁知道…)以“模式”呈现的

现在,运行以下代码

self.view.center = CGPointMake(self.view.frame.size.width * 0.5f, self.view.frame.size.height * 0.5f + 100);
在任何ViewController内部(通过按下按钮触发),将在除纵向(纵向“向上”)之外的所有方向上以错误方向移动视图。基本上,纵向将视图向下移动100像素(是的!),横向将向左或向右移动100像素,而反向将向上移动100像素。看着手中的设备,它将从同一物理侧为每个方向移动100px的视图(用于视觉参考)

我是否遗漏了一些非常明显的东西,使用了一些奇怪的设置,或者这只是预期的行为?(我希望是第一次或第二次)

在我看来,对于所有方向,x始终是水平的,y始终是垂直的,这是在较低的级别(由操作系统)进行管理的

所以,请指出显而易见的事情,并以我为代价好好笑一笑!:)

编辑。

好的,所以我启动了一个空项目(只有一个视图),行为也是一样的。但随后我在IB中拖入了一个导航控制器,将主控制器(a)设置为root。Simsalabim是的,它的行为符合我的要求。。。Ofc我可以删除导航栏,它看起来是一样的。我知道“窗口”和根viewcontroller一起工作来设置方向(viewcontroller确定是否允许等),但这是正确的方法吗?为什么它不能与单个ViewController一起工作?或者,如果您的初始ViewController只是一个普通的“视图控制器”,您是否希望UIView.center的行为会如此“奇怪”?或者您是否始终将navigationController作为初始点?大脑。。。痛

编辑2。

好的,当帧/边界返回什么时,似乎是零一致性的。基本上,如果您使用简单的ViewController作为初始控制器(例如,在NavigationController中没有嵌入根ViewController),则方向将是错误的。它在视觉上是正确的,但框架忽略了方向,边界在大多数情况下似乎是正确的。您何时希望框架忽略实际方向(视图/gui的呈现方式)?!当然,我希望它就像我在设备上看到的一样! 这使得自定义分段非常痛苦,因为,比方说,滑动动画在横向和纵向上看起来不一样。。。我在博客等网站上看到过多个例子“解释”它是如何工作的,但没有一个在两个方向上都有效。。。人们只是接受这种毫无意义的观点,还是仅仅是我看到了它的问题?我像个疯子一样在谷歌上搜索,但没有人有一个有效的例子,所有这些都只是黑客和砍杀,直到它“看起来有效”


^愤怒:)

好吧,经过一番艰苦的挖掘,我想我可能会尽我所能回答这个问题,因为其他人也有同样的头痛

总结一下我读到的内容(以及我对它的理解,对iOS来说有些陌生):

基本上,使用单一视图控制器作为初始VC将视图直接放在主窗口下,就像设备的屏幕实际上从未改变方向一样(屏幕的宽度和高度始终是相同的物理尺寸,无论方向如何)。这就是为什么在导航控制器中放置与根视图相同的视图控制器时,它会按预期工作的原因,因为导航视图现在将作为层次结构中所有其他视图的超级视图(以不同的方向正确重新计算变换)

对我来说,这是完全不明显的,这造成了很大的混乱!我想当然地认为这是由操作系统处理的,因为我无法想象什么时候斜轴会有用。。。但那只是我:)无论如何,希望这至少能帮助一些人

下面是一个很好的解释:

更改方向时,是否已验证视图控制器是否确实在旋转?是!一直在打印边界、边框和中心以进行验证,它们也在相应地更改。只是为了澄清:如果我使用导航控制器(将a保留为根VC),它们也会相应地更改。如果a只是将a设置为初始VC,它将在视觉上正确旋转,但框架和边界会有自己的生命。。。