Masonry 布局的 View 没有高度怎么办?
前言
情景:自定义了一个 UIView,在内部配置了几个元素,使用 Masonry 进行元素的布局。UIView 没有配置 frame,而是依赖内部元素撑起高度,依赖外部的约束控制宽度。
问题:最终结果是构造出来的 UIView 没有高度(高度为 0),导致显示混乱。
解决方案
排除其它问题,您可以检查一下 UIView 的内部元素的 Masonry 布局中,是否至少有一个元素的 mas_bottom 配置了与 self
(UIView)的约束关系。
分析:如果没有配置 UIView 的底部与元素的约束,那么 Masonry 布局时就不知道 UIView 的底部在哪里(而我们没有指定 UIView 的高度),于是就出现了元素都成功添加,但 UIView 的高度为 0 的问题。
后续:没有高度 -> 无法响应任何事件
如果您的视图有多个层级,每个层级的元素都需要至少一个配置 mas_bottom,否则其上一层级就会没有高度(无 frame),且会导致整个视图无法响应任何事件!
希望有所帮助。