我有一些真正的问题,理解为什么我的观点中心表现得像这样,完全放弃了设备的方向(而我本来很好的谷歌技能什么也没做)......我了解框架,边界和中心如何相互关联/superviews 等(这是一个很好的解释)。
所以,我有几个 ViewController(称它们为A & B)。B由A以“模态”方式呈现,使用“Cover Vertical”-transition (真的不那么相关,但谁知道......)。
现在,运行以下代码
self.view.center = CGPointMake(self.view.frame.size.width * 0.5f, self.view.frame.size.height * 0.5f + 100);
在任何视图控制器内(由按下按钮触发),将在除纵向(纵向“向上”)之外的所有方向上以错误的方向移动视图。基本上纵向会将视图向下移动 100 像素(是的!),横向将向左或向右移动 100 像素,而颠倒将向上移动 100 像素。查看手中的设备,它会将视图从每个方向的同一物理侧移动 100 像素(用于视觉参考)。
我是否在这里遗漏了一些非常明显的东西,使用了一些奇怪的设置,或者这只是预期的行为?(我希望这是第一个或第二个)。
在我看来,x 始终是水平的,y 对于所有方向始终是垂直的,并且这是在较低级别(由操作系统)管理的。
所以,请指出显而易见的事情,并以我为代价开怀大笑!:)
编辑。
好的,所以我开始了一个空项目(只有一个视图),行为是一样的。但后来我在 IB 中拖入了一个导航控制器,将主控制器 ( A ) 设置为 root。Simsalabim 是的,它的行为与我想要的一样... Ofc 我可以删除导航栏,它看起来一样。我知道“窗口”和根视图控制器一起工作以设置方向(视图控制器确定是否允许等),但这是要走的路吗?为什么它不适用于单个 ViewController?或者,如果您的初始 ViewController 只是一个普通的“视图控制器”,您是否只是希望 UIView.center 表现得“奇怪”?或者你总是有一个navigationController作为初始点?脑袋……疼……
编辑 2。
好的,所以框架/边界何时返回什么似乎是零一致性。基本上,如果您有一个简单的 ViewController 作为初始控制器(例如,没有作为根视图控制器嵌入到 NavigationController 中),则方向将是错误的。它在视觉上是正确的,但框架忽略了方向,并且边界在大多数情况下似乎是正确的。您什么时候希望框架忽略实际方向(如何呈现视图/gui)?!当然,我希望它就像我在设备上看到的一样!这使得自定义 segues 变得非常痛苦,因为,比如说,滑动动画在横向和纵向中看起来不一样......我在博客等中看到了多个示例。“解释”它是如何工作的,但没有一个真正起作用两个方向... 人们只是接受这种无稽之谈,还是只是我真正看到了它的问题?我像疯子一样在谷歌上搜索,没有人有一个有效的例子,所有这些都只是黑客和削减直到它“似乎工作”......
^愤怒:)