需求:大部分情况下,我们设置容器view的约束,都是可以用约束固定它的大小的,但是有一种情况,view的高度无法确定,因为它的高度要随着里面子控件label的高度大小来变,label内容多,自动换行后,高度就会变大,view的高度也要跟着增长,这个时候view的高度要随着label的高度而变
分析:当遇到自适应的情况时,把view的高度固定就不好了,可以上下方向选一个参照,固定一头,如固定了底部的话,设置一个相对于label的自适应约束,就会向上增长
解决:如果要在cell中加一个子控件,包括用view包装起来的,要考虑它的顶部和底部始终连着谁,如果该控件上面的东西有时候有,有时候没有,那么设置约束的时候,它的顶部就不能始终连着它上面的东西,要有一个固定的参照
父控件的高度应该跟随子控件,父控件高度应该跟着里面label的内容多少相应的压缩,距离labe底部为10,所以一开始把view的高度固定是不对的,应该把它的高度约束删掉,一定要删掉,不固定,怎么处理呢?
拿到子控件label,ctrl 拖线到父控件UIView,选择bottom Spacing to Container距离容器底部的间距,这个属性的意思是说设置子控件和父控件搞一个固定的间距,这样设置了约束之后,父控件永远比子控件高10的间距,如果希望父控件和子控件连在一起,可以设置为0
总结:1.先给这个view设置好高度约束,当里面加上label后,给label设置好上和下约束,宽高可以不用设置
2.删除view的高度约束设置,这里可以从view拖线到label,设置bottom spacing to container为0,也可以从label拖线到view设置约束为0
网友评论