UIStackView之一问一答
theme: juejin highlight: xcode
“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第2篇文章,点击查看活动详情”
前言
此篇文章作为在使用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,把麻烦事都交给它。
如果有比较难以理解或者初学者不懂的问题,稍后也会在这整理。
如果你还没有使用过UIStackView的可以查看我的上篇文章「使用UIStackView来简化iOS的界面布局」。
- LeetCode 初级算法之数组(上),看看你都学会了吗?
- LeetCode 初级算法之链表,看看你都学会了吗?
- LeetCode 初级算法之字符串(上),看看你都学会了吗?
- 纯代码布局,也可以一样的简洁
- UIStackView之一问一答
- 使用UIStackView来简化iOS的界面布局
- 夏天来了,iOS开发者们该如何减少App耗电?(上)
- 夏天来了,App开发者们如何看待手机发烫问题?
- 聊聊iOS中UITableView复用的那些事
- 曾经经典的微信打飞机游戏还有人记得吗?
- iOS 原生渲染与 Flutter 有什么区别 (上)
- 了解 Mach-O文件
- CocoaPods中podsepc文件设置详解
- iOS 原生渲染与 Flutter 有什么区别 (下)
- 简单了解 iOS CVPixelBuffer (上)
- 谈谈 iOS 包瘦身方案
- 播放器重构的探索之路
- 如何使用CocoaPods制作私有库
- iOS 组件化方案