新生代农民工的主页

UIStackView之一问一答

字数统计: 724阅读时长: 2 min
2022/09/09

stackview_bg

前言

此篇文章作为在使用UIStackView前的一些答疑,既是扫盲篇,也是实用篇。以下会讲述一些实用的案例,目的就是让更多的人拥抱UIStackView。同时欢迎小伙伴通过评论区讲讲使用StackView遇到的问题。

答疑

排列视图间距大小不一

问:排列视图间距大小不一,可以用UIStackView吗?
答:当然可以用,UIStackView虽然有space属性,但是适用于所有的排列视图,如果想要指定某个排列视图之间的间距,有以下两种方法:

  • 使用 - (void)setCustomSpacing:(CGFloat)spacing afterView:(UIView *)arrangedSubview API_AVAILABLE(ios(11.0),tvos(11.0));方法,不过这个方法有版本的限制。
  • 使用一个UIView进行填充;即在需要间隙的位置插入一个空的view,并设置好其宽度或高度来充当两个排列视图的间距。

截屏2022-09-07 22.49.43.png

排列视图对齐位置不一致

问:排列视图的对齐位置不一致,如何使用UIStackView?
答:我们可以选择一种合适的对齐方式保证适用于绝大多数排列视图,剩下的视图使用UIView进行封装,然后在View中进行约束布局。
截屏2022-09-07 23.08.00.png

排列视图大小不一致

问:排列视图的大小不一致,可以用UIStackView吗?
答:可以的,UIStackView中的排列视图不需要设置位置,至于尺寸大小可以根据自身需要设置。(设置方式AutoLayout

灵活多变的UI设计

问:多变的UI设计适合使用UIStackView吗?
答:再合适不过了,为什么这么说呢,虽然通过AutoLayout可以自适应,来解决灵活多变的UI布局,但是这会有繁琐的代码来控制。而通过使用UIStackView,我们仅添加一次排列视图,而后可以通过控制排列视图的显示或隐藏(hidden)就能使UIStackView重新布局。

列表可用?

问:UIStackView可以用于列表布局吗?
答:可以,使用UIStackView可以快捷的布局简单列表,相比较UITableView较为简单,使用UITableView往往需要设置代理,实现代理等。
具体做法:一般采用UIScrollView + UIStackView,ScrollView控制滚动,StackView管理内容。
2022-09-08 18-47-16.2022-09-08 18_48_45.gif

拉伸、压缩

问:听说UIStackView可以自适应排列视图,那么排列视图如果有拉伸或者压缩的需求可以使用UIStackView吗?
答:可以,UIStackView会优先根据**抗拉伸优先级Content Hugging Priority(优先级越高,越不容易被拉伸)、抗压缩优先级Content Compression Resistance Priority**(优先级越高,越不容易被压缩)去约束排列视图,并不会和StackView布局相冲突。

The end

总而言之,如果你怕麻烦,那就快来使用UIStackView,把麻烦事都交给它。

如果有比较难以理解或者初学者不懂的问题,稍后也会在这整理。

CATALOG
  1. 1. 前言
  2. 2. 答疑
    1. 2.1. 排列视图间距大小不一
    2. 2.2. 排列视图对齐位置不一致
    3. 2.3. 排列视图大小不一致
    4. 2.4. 灵活多变的UI设计
    5. 2.5. 列表可用?
    6. 2.6. 拉伸、压缩
  3. 3. The end