Autolayout自动布局cell

clipboard.png

如图所示,想做的效果为: 商品名称宽度不固定,价格宽度不固定,高度为自动计算行高。

我从右至左添加的约束为

+ 按钮约束: right 5 width 25 height 25 bottom 15

数量label约束: right 10 width 35 下对齐 +按钮

- 按钮约束: right 10 width 25 height 25 下对齐+按钮

价钱label约束: right 10 下对齐+按钮 width >= 50

商品名称label约束: left 5 right 10 centerY 居中 bottom 15

约束添加完毕后,还是有错误。 如下图所示

clipboard.png

望大佬指教!!

回复
阅读 2.7k
2 个回答

我按照你的layout, 自己写了一个xib. 出现和你一样的水平约束错误.(商户名称数量价格等label)
出现约束错误的原因是,约束默认都是优先等级是1000, 水平和垂直抗压缩系数相等, 然而这些label都会因为其内容而宽度发生改变,xcode认为这三个label水平方向无法保证其所有约束都能成立,所以报错。
解决
首先, 布局分析, 数量价格是必须要保证其内容完整显示, 所以宽度不能压缩. 能做处理的只能是商品名称.
所以, 先把商品名称水平抗压缩系数调低, 在把数量价格的调高即可满足需求.
1. 按你的需求拖出来的xib
图片描述
2. 改变商品名称约束系数, 如图点击change
图片描述
3. 修改价格系数
图片描述
4. 完成
图片描述
5. 测试1 - 修改数量
图片描述
6. 测试2 - 修改价格
图片描述
7. 测试3 - 修改商品名称
图片描述

设约束的方法很多,常用的是比例计算,例如width>=50这种只是一个限制条件,并不能起到绝对固定的作用,即你的价格宽度是可变的,然后根据cell的宽度会自动推算商品描述的宽度

最简单修改办法,如果cell是320的宽度,价格设置为(50),把描述的宽度 改为 320-5-25-10-35-10-25-10-(50)-10-5 = 135即可
clipboard.png

这么设置约束是有问题的,比如把 cell的宽度改成 414,就会这样
clipboard.png

我比较倾向的设置方法应该是 给price设置比例:
clipboard.png

这样就好了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏