不能等于 Xcode 11 中的 Superview 的高度

Posted

技术标签:

【中文标题】不能等于 Xcode 11 中的 Superview 的高度【英文标题】:Cannot equal height to Superview in Xcode 11 【发布时间】:2019-09-25 19:40:47 【问题描述】:

我今天将我的 Xcode 升级到了 11,并且刚刚意识到 Xcode 不再允许我创建从子视图到视图控制器的根视图的比例高度。直到今天早上,我才能够使用以前的 Xcode 版本做到这一点。唯一的解决方法是向控制器添加另一个 子根视图 并将其下的所有内容移动。此选项将花费太多时间来重新设计控制器的设置。

您是否遇到同样的问题?

这是来自新的 Xcode 11。如您所见,superview 不再有相等的高度或宽度选项。

这张图片来自我在以前的 Xcode 中创建的一个视图。如您所见,有一个比例约束等于 ViewController 的超级视图,比例为 0.65。

我不想在视图控制器中添加中间根视图。这将只是一个浪费时间的过程。有任何想法吗?我是否缺少新的魔法按钮或 +?

【问题讨论】:

你应该向 Apple 提交错误报告 刚刚向 Apple 报告。 同时,我建议下载最新的 Xcode 10 版本,并在需要应用等宽约束时使用该版本。这很烦人。 【参考方案1】:

您可以将视图设置为等于安全区域

如果你仍然依赖它等于根视图本身,你可以在 Attributes Inspector 中修改约束:

【讨论】:

感谢您的建议@Eilon 这实际上是一个很好的解决方案。但是我没有使用安全区域,并且在 Xcode 10 中没有它我可以做到这一点。如果这是 Apple 的新要求,那么我无话可说。我仍然认为这仍然是一个错误,因为我之前创建的约束受 Xcode 11 支持,当然我不会删除它们,否则我无法重新创建它们。 另请参阅如何创建“Width equals height” constraint in Interface Builder【参考方案2】:

我昨天向 Apple 发送了一份错误报告,并在 Apple 论坛中找到了以下讨论。我不认为我是唯一遇到此问题的开发人员。

Xcode 11 Add "Equal Width to Superview" Constraint?

我相信 Apple 很快就会针对这个问题创建一个补丁。所以我决定通过在根视图下添加一个名为“Propotional View Helper”的新 UIView 来创建一个临时解决方案。我为其超级视图提供了尾随、前导、底部和顶部约束。现在我能够拖动以对超级视图进行相等的宽度和高度约束。

【讨论】:

这真是令人愤怒。 Xcode 11 的第二个“破坏性”问题(第一个是 ios 【参考方案3】:

    首先对任何其他 UIView 元素执行“等宽”。

    转到等宽约束的属性检查器。

    将第二项替换为 Superview.Width。

学分:https://forums.developer.apple.com/thread/123284

【讨论】:

【参考方案4】:

在“显示文件检查器”选项卡中,在界面生成器文档下启用“使用安全区域布局指南”并将视图等宽或等高设置为“安全区域”。

【讨论】:

以上是关于不能等于 Xcode 11 中的 Superview 的高度的主要内容,如果未能解决你的问题,请参考以下文章

Xcode故事板 - 大于或等于约束不起作用

在 Xcode 11 游乐场中使用 SwiftUI

Xcode 11 的问题 - “INT 不能转换为 CGFloat?”

不能在带有 Xcode 11 包管理器的 Swift 包中包含 C 文件

可选类型 '$T11' 不能用作布尔值;自安装 XCode 6 beta 7 以来测试 '!= nil'

可选类型 '$T11' 不能用作布尔值;自安装 XCode 6 beta 7 以来测试 '!= nil'