gpt4 book ai didi

ios - "wrong orientation"中的 UIView 中心

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:41:06 27 4
gpt4 key购买 nike

我在理解为什么以我的观点为中心表现得像它那样时遇到了一些真正的问题,完全放弃了设备的方向(以及我其他方面良好的谷歌技能没有提供任何东西)......我理解框架,边界和中心的关系彼此/ super View 等(here is a good explaination)。

所以,我有几个 ViewController(称它们为 AB)。 BA 使用“Cover Vertical”过渡(实际上不是那么相关,但谁知道...)以“模态”呈现。

现在,运行下面的代码

self.view.center = CGPointMake(self.view.frame.size.width * 0.5f, self.view.frame.size.height * 0.5f + 100);

在任何 View Controller 内(通过按下按钮触发),将在错误的方向上移动 View ,除了纵向(纵向“向上”)以外的所有方向。基本上,人像会将 View 向下移动 100 像素(是的!),风景会向左或向右移动 100 像素,而颠倒会向上移动 100 像素。查看手中的设备,它会将 View 从每个方向的同一物理侧移动 100 像素(用于视觉引用)。

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

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

所以,请指出显而易见的地方,并以我为代价开怀大笑! :)

编辑。

好吧,所以我开始了一个空项目(只有一个 View ),行为是一样的。但后来我在 IB 中拖入了一个导航 Controller ,将主 Controller (A) 设置为 root。 Simsalabim 是的,它的行为与我想要的一样......我可以删除导航栏,它看起来一样。我知道“窗口”和 root-viewcontroller 一起工作来设置方向(viewcontroller 确定它是否被允许等),但这是要走的路吗?为什么它不能与单个 ViewController 一起使用?或者如果您的初始 ViewController 只是一个普通的“View Controller”,您是否只是期望 UIView.center 表现得“奇怪”?或者你总是有一个 navigationController 作为初始点?脑子……疼……

编辑 2.

好的,所以框架/边界何时返回什么似乎是零一致性。基本上,如果您有一个简单的 ViewController 作为初始 Controller (例如,没有作为 Root View Controller 嵌入到 NavigationController 中),方向将是错误的。它在视觉上是正确的,但框架忽略了方向,并且边界在大多数情况下似乎是正确的。您什么时候希望框架忽略实际方向(如何呈现 View /gui)?!我当然希望它像我在设备上看到的那样!这使得自定义 segues 变得非常痛苦,因为,比如说,滑动动画在横向和纵向看起来不一样......我在博客等中看到了多个例子。“解释”它是如何工作的,但实际上没有一个在两个方向...人们只是接受这种胡说八道还是只有我真的看到了它的问题?我像疯子一样在谷歌上搜索,但没有人有一个有效的例子,所有这些都只是黑客攻击和削减直到它“似乎有效”......

^愤怒:)

最佳答案

好吧,在深入挖掘之后,我想我可能会尽我所能为其他有同样头痛的人回答这个问题!

总结一下我读过的内容(以及如何解释它,对 iOS 有点陌生):

基本上,使用单独的 View Controller 作为初始 VC 会将 View 直接放置在主窗口下方,就像设备的屏幕永远不会真正改变方向(屏幕的宽度和高度始终是相同的物理尺寸,不物质取向)。这就是为什么当您将相同的 View Controller 作为根放入导航 Controller 时它会按预期工作,因为导航 View 现在将作为层次结构中所有其他 View 的 super View (正确地重新计算不同方向的变换)。

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

这里有一个很好的解释: UIViewController returns invalid frame?

关于ios - "wrong orientation"中的 UIView 中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19813621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com