- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个包含自动布局和大小类的 Storyboard。相当复杂的布局,不幸的是我无法确定如何在新项目中重现该问题。
但是有问题的 View 被固定在屏幕的左右边缘,具有 750 优先级的约束(即 |-(0@750)-[myView]-(0@750)-|
,此外它具有大于或等于优先级为 1000 的约束(即 |-(>=0)-[myView]-(>=0)-|
)。这样做是为了限制 iPad 的宽度,所以有一个宽度约束 width <= 600 @1000
,还有一个 center horizontal in container 约束。最重要的是该 View 的纵横比约束为 3:1。正如我所说,相当复杂。
Interface Builder 没有显示任何约束问题。 Xcode 布局预览可正确呈现所有设备。
当我运行应用程序时,iOS 告诉我它有冲突的约束。
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x7fd72853ff80 DMXKit.DipSwitchAssembly:0x7fd72990d0e0.width == 3*DMXKit.DipSwitchAssembly:0x7fd72990d0e0.height>",
"<NSLayoutConstraint:0x7fd728574e50 '_UITemporaryLayoutWidth' H:[DMXKit.DipSwitchAssembly:0x7fd72990d0e0(400)]>",
"<NSLayoutConstraint:0x7fd72856e9c0 V:[DMXKit.DipSwitchAssembly:0x7fd72990d0e0(133)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7ffb19798000 DMXKit.DipSwitchAssembly:0x7ffb1979a000.width == 3*DMXKit.DipSwitchAssembly:0x7ffb1979a000.height>
这会重复几次,具有完全相同(即相同的指针)约束。这也很奇怪,看起来约束并没有真正被打破。运行时,应用程序看起来 100% 正确。当我在 Xcode View 调试器中查看应用程序时,地址为 0x7ffb19798000
的约束仍然在那里,所以它从未被打破。
_UITemporaryLayoutWidth
在哪里?约束从何而来?显然我没有添加它。谷歌没有吐出任何关于 _UITemporaryLayoutWidth
的有用信息.有人遇到过这样的问题吗?
最佳答案
所以,我不确定这是否能帮助您解决问题,因为听起来您正在 IB 中构建布局,但这是我刚刚遇到的一个问题,可能有助于其他人在 google 上搜索“_UITemporaryLayoutWidth” .
我的场景是我在初始化期间添加了自动布局约束,并且在将 View 添加到 View 层次结构之前意外触发了“layoutIfNeeded”(修改按钮边缘插入触发布局)。看起来系统添加了这些临时约束并(我假设?)在将 View 添加到层次结构后删除它们。临时约束设置 0 维(在我的例子中),如果你在你的布局中设置特定的约束常量值(例如,你想在这些按钮之间有 16px 但那个维度中有 0 个空间......)可能会失败。 p>
更新: 稍微调查了一下,发现临时约束似乎对应于您用来初始化父 View 的框架。在我的例子中,我使用的框架大小为 0x0,因此相对于 0x0 大小评估的临时约束因此失败。验证如果我使用 5x5 帧进行初始化,那么我会看到与 _UITemporaryLayoutWidth(5) 约束相同的错误。我注意到的另一件事是,在布局评估期间似乎添加和删除了约束 - 如果我在触发布局之前中断并分析约束,那么我看不到临时约束。我也没有看到错误后的约束,所以我怀疑他们综合了临时约束,添加它们,解决然后删除它们。
更新 2: 好的,也许这是 TMI,但这可能对某些人有用。我目前的想法是,这些临时约束是对系统如何处理单个 View 层次结构中的混合帧操作和自动布局的窥视。在我的例子中,我的 View 没有父 View ,也没有定义其大小的约束,但它确实有一个零帧,这意味着系统假定这是它在解决布局时应该使用的大小。我的想法是,系统会为 View 综合这些临时约束,这些 View 的框架已明确设置,以在遍历层次结构时解决系统的其余部分。
更新 3: 所以,我又遇到了这个问题,想分享更多信息。我的场景是,我试图使用 systemLayoutSizeFittingSize: 方法从本质上测量没有父级的 View 。 长话短说,我不得不在测量 View 之前调用 layoutIfNeeded - 这是我遇到与临时约束冲突的地方,因为 View 没有父 View 。临时约束常量 (尺寸)确实对应于没有 super View 的 View 上设置的任何框架 - 我认为这是有道理的(虽然,在你将要与 AutoLayout 一起使用的 View 上设置框架似乎很奇怪......)我能够通过说 - 如果 View 没有 super View 然后将其添加到临时 super View 来解决临时约束问题;措施;从临时 super View 中删除它。希望这有用。
关于ios - 什么是 _UITemporaryLayoutWidth 以及为什么它会打破我的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30969353/
这是主函数,其中还调用了 9 个函数。我将向您展示另一个函数,以便您了解我的目标是什么。 int main() { char B[rows][columns]; char answer
每当我使用 preventDefault() 时,我通常将它放在事件处理程序的顶部,如下所示: $('#foo').on('click', function(e){ e.preventDefaul
我想要实现的是用户输入一个值,然后输入一个测量值。然后将其放置为最小、最大或介于两者之间。保留输入了多少个值的计数。以及以米为单位的所有值的总和。 程序最初可以运行,但是当我输入换行符时,程序会重复同
我无法打破 while 循环。 "; $quizslots = mysql_query("SELECT * FROM quiz_slots WHERE `quizid`=$quizsectio
所以我将一个模板化的二叉树字典实现为一个继承自抽象字典类的类,我的添加函数有一个我无法弄清楚的问题。 基本上,我的树的节点具有键和值,以及指向其父节点、左子节点和右子节点的指针。节点的代码是 stru
我的代码应该在内容之间放置一个横幅,但它正在循环播放横幅。我需要它只显示一个横幅。我试过使用 return false;,就像这个例子一样,但它没有用: $(".newsitem_text").con
我有一个 Storyboard指定用于登录我的应用程序。我将其嵌入到 UINavigationController 中。登录到我的应用程序(并过渡到新的 Storyboard)后,我想“脱离”这个导航
我想知道是否可以在不使用 MCU 复位引脚上的外部复位按钮的情况下中断 while 循环并从特定位置重新启动代码。 下面是当“if”语句为真时我想中断的 while 循环,我正在使用 LCD,并想返回
所以我有这个问题,如果数组中的值高于输入值,它应该做一些事情然后停止循环并且不要触及数组中的剩余值。这是到目前为止的代码: const percentages = []; let enteredVal
我想在“div2”中打断长字,div2 和 div3 的宽度都不能大于父宽度(即 150px)。唯一有效的是 word-break: break-all 但这也会打断短词。 #div1{ di
我的数据库中有 3 个表。 PARENT_A 有一个“ID”主键列。 PARENT_B 有一个“ID”主键列。 CHILD 具有“PARENT_A_ID”和“PARENT_B_ID”外键列。它还有一个
在这个非常人为的示例中,我有一个包含 3 个元素的数组,我使用 .each() 对其进行循环。方法。 var vals = $w('foo bar baz'); vals.each( function
非常简单的示例代码(仅用于演示,没有任何用处): repeat { while (1 > 0) { for (i in seq(1, 100)) { break # usual
我有以下 promise : var aggregatePromise = () => { return new Promise((resolve, reject) => { Ei
我想检测表单的“输入”键而不让表单被提交。我如何打破这种关联? document.forms[0].onkeypress = function (event) { e = window.eve
这里是新手。我有一个 Ajax 函数,可以循环 3 个不同的请求。但是,如果第一个请求失败,我希望其他请求终止。我尝试放入“break”语句,但收到“非法的break语句”错误,我猜测是因为它不是直接
我有一个 Vector的 Vector不同长度的 s W .这些最后的向量包含 0 到 150,000 之间的整数,步长为 5,但也可以为空。我正在尝试计算每个向量的经验 cdf。我可以像这样计算这些
我想知道如何正确地打破 JS 中的 promise 链。 在这段代码中,我首先连接到数据库,然后检查集合是否已经有一些数据,如果没有则添加它们。不要关注一些 actionhero.js 代码..这里并
我有一个 Vector的 Vector不同长度的 s W .这些最后的向量包含 0 到 150,000 之间的整数,步长为 5,但也可以为空。我正在尝试计算每个向量的经验 cdf。我可以像这样计算这些
您可以使用 CompletableFuture 链接运行 block ,如下所示: CompletableFuture .supplyAsync(block1) .thenApply(
我是一名优秀的程序员,十分优秀!