【问题标题】:Ambiguous constraint for UITableView when width >= and <=当宽度 >= 和 <= 时 UITableView 的模糊约束
【发布时间】:2021-11-05 10:14:42
【问题描述】:

尝试将表格视图宽度设置在 290 到 460 磅之间。 它足以为小屏幕制作内容,并且对于 iPad Pro 等大屏幕看起来也不错。 我也想有前导和尾随空格> = 20。

今天是我尝试修复“不等式约束歧义”的第二天... 感谢您的帮助!

我是 iOS 开发新手,所以请不要踢我太多 :)

【问题讨论】:

  • 你可能不需要前导和尾随约束
  • 它是 Ambiguous 因为你没有告诉自动布局你希望你的表格视图有多宽。你的约束说:minimum width: 290maximum width: 460。那么......它应该有多宽? 320? 371? 427?你真的想用你的布局做什么?

标签: ios xcode constraints


【解决方案1】:

如果我正确理解您的目标,您希望您的表格视图是:

  • 20 分领先和落后
  • 除非使表格视图的宽度超过 460 点
  • 在这种情况下,表格视图应水平居中

所以,回顾一下我的评论......你的约束说:

  • 水平居中表格视图
  • 使前导和尾随&gt;= 20 分
  • 290460之间设置宽度

问题是您没有告诉自动布局您希望宽度在290460 之间结束。

所以,你需要更多的约束。

从简单的开始... tableView 约束 20 点顶部/前导/尾随和零点底部(当然都到安全区域):

接下来,添加 第二组 20 pt 的前导和尾随约束:

现在将一对设置为&gt;=,并为另一对设置低于要求的优先级:

= 对前导/尾随约束上的 Default High 750 优先级告诉自动布局 “尝试将边从边缘拉到 20 分,但如果约束冲突,则允许其中断具有更高的优先级”&gt;= 对上的 Required 1000 优先级为我们提供了最少每边 20 分。

如果我们切换到横向(iPhone 11),一切看起来都一样... 20-pts Top / Leading / Trailing and Zero-pts Bottom:

但是...您的目标是460 的最大宽度,所以让我们添加&lt;= 460 的宽度约束:

我们看到约束存在红色问题,因为我们仍然没有提供足够的自动布局信息 - 所以,我们将添加一个水平中心约束:

这是它在 9.7 英寸 iPad 上的外观:

我们不需要 -- 也不想要 -- &gt;= 290 宽度约束。 = 20 约束将处理这个问题。而且,虽然现在不太可能,但如果您的应用最终在 iPhone 4s 或第一代 SE 上运行,则视图宽度仅为 320... 和 290 + 20 + 20 == 330,并且您会遇到约束冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2021-08-23
    • 2015-01-16
    • 2017-11-07
    相关资源
    最近更新 更多