Autolayout自动布局cell
如图所示,想做的效果为: 商品名称宽度不固定,价格宽度不固定,高度为自动计算行高。
我从右至左添加的约束为
+ 按钮约束: 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
约束添加完毕后,还是有错误。 如下图所示
望大佬指教!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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即可
这么设置约束是有问题的,比如把 cell的宽度改成 414,就会这样
我比较倾向的设置方法应该是 给price设置比例:
这样就好了