2014-09-24 18 views
8

我正在使用iOS 8.我的笔尖已启用自动布局和尺寸类别。我在IB中做了两个布局,一个用于任何宽度/任何高度,另一个用于任何宽度/紧凑高度。我已经在IB中测试了不同的方向和设备大小,并且我没有IB中的约束问题。为什么我会在不应为尺寸类安装的约束上出现自动布局错误?

现在,当我在手机上运行应用程序。该视图以正确的方式放置在肖像中。然后我将手机旋转到风景,然后出现“无法同时满足约束条件”。错误。当我查看冲突约束的列表时,我发现应该已经为横向布局卸载了一个约束。旋转完成后,横向布局显示正确。

就好像iOS试图在旧约束卸载之前用新边界布局视图。这是iOS的一个已知问题吗?是否需要执行一个步骤来正确支持大小类?

+2

我有完全相同的问题!当我旋转肖像(在模拟器上)时,我得到了一个约束的冲突约束,该约束是* not *为该大小类安装的!郁闷了!我不断重置约束 - 同样的错误! – wcochran 2015-02-16 19:44:12

回答

0

我仍然认为这是一个iOS错误,但我没有时间做一个示例项目来重现它。我认为这种布局的不寻常之处在于,我有一个图像视图,当手机旋转到横向时,图像视图移动到完全不同的位置。

图像视图上的宽度约束对于任何大小类都有不同的常量,但是这是抛出异常。

接下来要做的事情是使用不同的宽度约束。一个是为了紧凑的高度安装的,另一个是为其他所有安装的。即使应该没有安装破解约束,这仍然会引发异常。

最后,我得到的解决方案是有两个图像视图,一个用于常规布局,另一个用于高度紧凑。一次只安装一个图像视图。这工作没有例外,看起来完全一样。

5

我遇到了同样的问题。非常令人沮丧!起初,我将代码添加到了willTransitionToTraitCollection:withTransitionCoordinator:以检测newCollection是否为不需要约束的大小类。如果是这样,那么我设置constraint.active = NO。

它伎俩,但我讨厌的代码。我就是这样说的:“为什么我必须这么做呢?约束没有安装在新的尺寸等级上!”

然后我发现如果我在界面生成器中将违规约束的优先级降低到999,我不再在旋转时在控制台中收到约束错误。 :-)一切都与这个世界再合适不过了。

+0

我目前也很享受这个问题 - 我想我会给你的优先级技巧一去。但是,你知道这种性质的约束冲突是否会导致崩溃/类似问题,以及苹果是否会纯粹在此基础上拒绝某个应用? – headbanger 2016-04-07 10:02:04

+1

试过了 - 它工作。你是公爵夫人。有投票权。 – headbanger 2016-04-07 10:04:13

相关问题