首页 > 解决方案 > 宽度 >= 和 <= 时 UITableView 的模糊约束

问题描述

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

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

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

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 较小和较大设备的宽度差异

标签: iosxcodeconstraints

解决方案


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

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

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

  • 水平居中表格视图
  • 使领先和落后>=20 分
  • 使宽度介于290460

问题是您还没有告诉自动布局之间的位置,290并且460您希望宽度结束。

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

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

前导/尾随约束对的Default High 750优先级=告诉自动布局“尝试将边从边缘拉到 20 点,但如果冲突的约束具有更高的优先级,则允许它中断”,并且Required 1000优先级>=对每边至少给我们20分。

如果我们切换到横向(iPhone 11),一切看起来都一样...... 20 分顶部/前导/尾随和零分底部:

在此处输入图像描述

但是......你的目标是最大宽度460,所以让我们添加一个宽度约束<= 460

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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


推荐阅读