【问题标题】:Auto Layout of view hides subviews视图的自动布局隐藏子视图
【发布时间】:2016-12-18 06:08:26
【问题描述】:

我在导航控制器中嵌入了一个 UIViewController。我正在使用自动布局。在界面生成器中,这是 VC 的外观。

但是当在模拟器中运行时,我得到了这个:

出现此错误。

2016-08-10 16:51:17.077 我的应用程序[11797:7752671] 无法同时 满足约束。可能至少有一个约束条件 以下列表是您不想要的。试试这个:(1)看每个 约束并尝试找出您不期望的; (2) 找到 添加不需要的约束或约束并修复它的代码。 (注意:如果您看到 NSAutoresizingMaskLayoutConstraints 不明白,参考UIView属性的文档 translatesAutoresizingMaskIntoConstraints) ( "<0x7fad72f7d6b0 v:><0x7fad72ffa6a0 v:><0x7fad72fe2460 v:><0x7fad72fe1470 _uilayoutguide:0x7fad72e64760.bottom="=" uiview:0x7fad72fe1b40.bottom>

标签: ios objective-c uiview autolayout storyboard


【解决方案1】:

编辑器 > 解决自动布局问题 > “所有视图”重置为建议的约束 几乎无法正常工作。所以只是避免它。

添加约束时,需要为每个项目指定四件事:

  1. X 位置
  2. Y 位置
  3. 宽度
  4. 身高

有一些创造性的方法可以做到这一点,所以我建议你将这些约束添加到查找按钮:

  • 水平居中
  • Superview 的前导空间 Superview 的尾随空间(您不需要两者)
  • 身高
  • 索书号的顶部空格

您的 x 位置和宽度满足水平居中和前导或尾随空间。这两个约束使按钮居中,并在按钮的两侧为您提供相等的空间。该按钮将与视图减去两侧的空间一样宽。设置高度显然满足按钮的高度,而顶部空间满足按钮的 y 位置。这样你就很容易满足了按钮的x位置、y位置、宽度和高度,就大功告成了。

【讨论】:

  • 我不同意,如果您将视图与蓝色对齐线相匹配,并且这是非常简单的屏幕,重置为建议的约束有助于节省时间。
  • borisy - 我很高兴它对你有用。如果我的观点满足你刚刚给出的两个先决条件,我发现多打几个方框比思考一分钟更容易。
【解决方案2】:

请设置你的约束如下图

【讨论】:

  • 可以去掉louckup按钮的宽度限制。
【解决方案3】:

您需要重新开始并考虑您正在制定的限制条件。想想哪些信息是已知的,哪些大小不应该改变。将此信息告知 Auto Layout。

您的按钮没有出现,因为自动布局不知道如何定位它,它缺少以下数字。删除所有约束并从以下内容重新开始。不是你可以改变这个数字。

  1. Txt Search.top = 顶部布局指南.bottom。这是你的,是正确的。
  2. 文本搜索高度 = 20.0
  3. Txt Search.leading = 0 有边距
  4. Txt Search.trailing = 0 有边距
  5. Lo​​okup.top = Txt.Search.bottom + 标准边距
  6. Lo​​okup.leading = 0 有边距
  7. Lo​​okup.trailing = 0 有边距
  8. Lo​​okup.height = 20.0

【讨论】:

  • 为什么我不能使用“重置为建议的约束。”?使用此方法,我的所有其他视图都可以正常工作。
  • 好问题,当你点击Reset to Suggested Constraints时,Xcode 会为你建议约束。这适用于最简单的情况。在你的情况下稍微复杂一点,没有你的帮助,Xcode 不知道如何解决这个问题。
  • 一个文本字段和一个按钮有多复杂?
  • 自动生成的约束告诉这一点:调整文本字段高度,使其刚好位于按钮的顶部。但是按钮在哪里?它说将按钮放在文本字段下方。但是文本字段在哪里?如此继续。它是一个基本的逻辑循环。
【解决方案4】:

重置为建议的约束永远不会解决您的问题,它只会隐藏警告。您必须设置适合您要求的约束条件。根据您的问题,当您选择选项重置为建议的约束时,自动布局将为 LOOK UP 按钮提供底部布局约束,并且它有太多的底部约束(当您休息到建议的约束时会发生这种情况),因此它在运行时被推高。

您只需要按钮的顶部和前导/顶部和中心水平约束,对应于其上方的文本字段以及高度和宽度约束。移除 LOOK up 按钮的底部约束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2018-07-22
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多