- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在理解为什么以我的观点为中心表现得像它那样时遇到了一些真正的问题,完全放弃了设备的方向(以及我其他方面良好的谷歌技能没有提供任何东西)......我理解框架,边界和中心的关系彼此/ super View 等(here is a good explaination)。
所以,我有几个 ViewController(称它们为 A 和 B)。 B 由 A 使用“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/
我知道在 OOP 中你希望每个对象(来自一个类)都是一个“东西”,例如。用户、验证者等 我了解 MVC 的基础知识,了解它们的不同部分如何相互交互。 但是,我想知道MVC中的模型是否应该按照传统的OO
我想知道 Android 手机是否真的有方向传感器。我怀疑并不是所有的安卓手机屏幕都会随着方向的改变而改变(比如带有 qwerty 键盘的手机) 我浏览了文档并找到了一个 bool 方法“canDet
我已经创建了一个设备方向监听器来捕捉设备旋转的时间,就像这样 [[NSNotificationCenter defaultCenter] addObserver:self
我已通过 XCode 将方向锁定为横向左和横向右,但使用 UIDevice.current.orientation 给出的方向就好像未锁定一样。就像当我物理上(在现实生活中)处于纵向,但我的 View
我无法保持当前的 View 方向。在下面的设置中,我已经能够将第一个 View Controller 锁定为纵向,将第二个 View Controller 锁定为横向或纵向。但是,当我将第二个导航 C
This question already has answers here: is it wrong to treat panic / recover as throw / catch (2个答案)
使用 iOS 8.3 我有一个横向模式的 View ,我正在尝试打开一个仅纵向 View Controller 。每次我尝试打开它时,应用程序都会崩溃。 我读过这个official apple ans
我正在编写一个将在手机和 Honeycomb 平板电脑上运行的 Android 应用程序,并且从一开始就运行基于操作系统的不同 Activity 。在非 honeycomb 设备上,我将所有 Acti
我看到我们可以使用以下方法创建 orient db: ODatabaseDocumentTx db2 = new ODatabaseDocumentTx ( "local:C:/temp/db/scr
我想知道这两者之间有什么区别?一个比另一个的好处?等等…… 最佳答案 “水平”允许布局中的元素彼此并排放置,而“垂直”则将它们堆叠在一起。两者都没有真正的好处 - 使用最适合您的设计的那个。 offi
HTML 代码: Home Feed
我正在尝试使用此代码在 View 上强制定向。 -(BOOL)shouldAutorotate { return YES; } -(NSUInteger)supportedInterfaceO
我有一个 XML 布局,在横向和纵向方向上工作得很好,但有一个异常(exception) - LinearLayout 中的两个按钮需要水平放置在横向设备方向上,垂直放置在纵向设备方向上。 我想知道是
我四处搜寻,结果很难找到答案。 Theres算法可以生成四元数形式的随机方向,但是它们涉及sqrt和trig函数。我真的不需要统一分布的方向。我只需要生成(许多)四元数,以使它们的方向随机性“足够好”
我想在 2 轴上监视设备的方向:非常简单:哪个方向朝下。 它必须在长时间(12 小时)内保持准确性 它将受到围绕所有轴的旋转和加速度 该设备将是带有标准陀螺仪/加速度计的 Android 手机。对于这
我有一个初始四元数q0。我得到了角速度测量结果,对速度进行了积分,所以在50Hz左右获得了3个角度。如何基于3个角度制作四元数?我不能只做3个四元数,可以吗? 所以要说清楚。 Q.new = Q.ne
我正在尝试实现用于方向检测的卡尔曼滤波器。就像我在网上找到的大多数其他实现一样,我将使用陀螺仪和加速度计来测量俯仰和滚动,但我还打算添加水平检测。这将使我对俯仰和滚动进行第二次阅读。这意味着我将有两种
我们有 XSENS MTi IMU 设备并使用 ROS 框架 (Ubuntu/Fuerte)。我们订阅了 IMU 数据,所有数据看起来都不错,除了方向。 在 Euler-Outputmode 中,就像
我想设置一个 TabControl 使其标题位于左侧而不是顶部,我该怎么做? 最佳答案 关于wpf - TabControl.Orientation?,我们在Stack Overflow上找到一个
是否有任何用于方向更改和窗口调整大小的 openui5 事件处理程序? onInit: function() { var data; this.drawChart(data);
我是一名优秀的程序员,十分优秀!