autolayout怎样在一个视图中平均分布若干个子视图–autolayout 基本用法

来源:互联网 发布:lol职业选手训练软件 编辑:程序博客网 时间:2024/04/30 02:27

前几天有个小伙伴在群里问我,如何将6个视图平均分布在一个 cell中,其实这样的布局在应用里很常见,比如6个菜单按钮,或者商城类应用的商品推荐部分。那么下面我就详细说一下我是怎么做的,希望可以帮助到更多的小伙伴。
如图,我将在这里分布六个 ImageView

步骤:
1.拖一个 imageView 控件进入父视图中(这里是自定义 cell);
2.手动调整 imageView 的大小,使其差不多为平均分布之后的大小;
3.复制该 imageView5个,快捷键 commend+c,拷贝 commend+v;
4.调整每个 imageView 的位置,差不多如上图就可以。
5.按住 commend 键,点击每个 imageView,全部选中。
6.开始放大招了,看图下图
这里写图片描述
比如我这里设置每个子视图的间距为8,然后必须要勾选 Equal Widths 和 Equal Heights,因为我们需要每个子视图尺寸是一样的。下一步选择 Update Frame为 Items of New Constraints如图,这样方便我们在添加约束后立刻看见效果。
7.确定。

这时候如果不出意外的话,你会看见留个子视图乖乖的平均分布在了父视图中,是不是效率很高呢?

这里在提一点,有时候你设置完约束会发现旁边有红线,或者出现警告,说明你的约束是有歧义的或者是约束不够。我建议大家在添加约束的时候先把宽度和高度约束好了,再添加对齐方式,如果宽高不合适,添加完对齐方式再设置而也不迟。最后 Update Frame 的时候一定要勾选第二个 Items of New Constraints, 这样你就可以方便的看出有没有完全约束正确。

还有一点,我这里是在一个 tabViewCell 放置6个子视图,所以在添加约束时勾选 constrain to margins 和不勾选效果有点差别,如果勾选了你会发现每个子视图互相的间距是8,而与父视图的间距要大于8。如果你不勾选,则每个子视图之间的间距、子视图与父视图直接的间距都是8,达到了完全平均分布。具体效果还需要小伙伴们自己实操一下,只有自己动手做了才会理解深刻。

鄙人水平有限,有失误之处还望小伙伴们多多指教。

1 0