前言
此篇文章作为在使用UIStackView前的一些答疑,既是扫盲篇,也是实用篇。以下会讲述一些实用的案例,目的就是让更多的人拥抱UIStackView。同时欢迎小伙伴通过评论区讲讲使用StackView遇到的问题。
答疑
排列视图间距大小不一
问:排列视图间距大小不一,可以用UIStackView吗?
答:当然可以用,UIStackView虽然有space属性,但是适用于所有的排列视图,如果想要指定某个排列视图之间的间距,有以下两种方法:
- 使用
- (void)setCustomSpacing:(CGFloat)spacing afterView:(UIView *)arrangedSubview API_AVAILABLE(ios(11.0),tvos(11.0));
方法,不过这个方法有版本的限制。 - 使用一个UIView进行填充;即在需要间隙的位置插入一个空的view,并设置好其宽度或高度来充当两个排列视图的间距。
排列视图对齐位置不一致
问:排列视图的对齐位置不一致,如何使用UIStackView?
答:我们可以选择一种合适的对齐方式保证适用于绝大多数排列视图,剩下的视图使用UIView进行封装,然后在View中进行约束布局。
排列视图大小不一致
问:排列视图的大小不一致,可以用UIStackView吗?
答:可以的,UIStackView中的排列视图不需要设置位置,至于尺寸大小可以根据自身需要设置。(设置方式AutoLayout
)
灵活多变的UI设计
问:多变的UI设计适合使用UIStackView吗?
答:再合适不过了,为什么这么说呢,虽然通过AutoLayout
可以自适应,来解决灵活多变的UI布局,但是这会有繁琐的代码来控制。而通过使用UIStackView
,我们仅添加一次排列视图,而后可以通过控制排列视图的显示或隐藏(hidden)
就能使UIStackView
重新布局。
列表可用?
问:UIStackView可以用于列表布局吗?
答:可以,使用UIStackView可以快捷的布局简单列表,相比较UITableView较为简单,使用UITableView往往需要设置代理,实现代理等。
具体做法:一般采用UIScrollView + UIStackView
,ScrollView控制滚动,StackView管理内容。
拉伸、压缩
问:听说UIStackView可以自适应排列视图,那么排列视图如果有拉伸或者压缩的需求可以使用UIStackView吗?
答:可以,UIStackView会优先根据**抗拉伸优先级Content Hugging Priority
(优先级越高,越不容易被拉伸)、抗压缩优先级Content Compression Resistance Priority
**(优先级越高,越不容易被压缩)去约束排列视图,并不会和StackView布局相冲突。
The end
总而言之,如果你怕麻烦,那就快来使用UIStackView,把麻烦事都交给它。
如果有比较难以理解或者初学者不懂的问题,稍后也会在这整理。