如何让UIView容器视图跟随内部UILabel文本内容自动调整尺寸
视图自适应尺寸实现思路
方案一:Auto Layout 约束实现(推荐)
- 先对内部
UILabel做基础配置:设置行数为1(单行展示场景),把内容压缩阻力优先级、内容拥抱优先级都调到最高,保证UILabel不会被强制拉伸/压缩,尺寸会完全贴合自身文本内容。 - 给
UIImageView设置固定宽高约束,同时配置它和UILabel的水平间距、垂直对齐约束,固定两者的相对位置。 - 容器
UIView不设置固定宽高,只设置内部子控件的边距约束:UILabel、UIImageView到容器顶部、底部、左右边缘的间距设为固定值,让容器的尺寸完全由内部子控件撑开。 - 外层父
UIView同样不设置固定宽高,只配置位置类约束(比如在父布局中的位置、和其他同级元素的间距),同时设置它和容器UIView的四边边距为固定值,即可实现父视图跟随容器同步缩放。 - 额外给
UILabel添加最大宽度约束,对应30个字符的展示宽度,避免文本过长时布局溢出。
方案二:Frame 手动计算实现
- 每次给
UILabel赋值文本后,先调用文本尺寸计算方法,拿到当前文本在指定字号、最大宽度限制下的实际宽高。 - 按照预设的图标尺寸、图标与文本的间距、容器内边距参数,计算出容器
UIView需要的宽高,直接修改容器的frame。 - 再根据容器的frame尺寸,同步更新外层父
UIView的frame即可。
内容的提问来源于stack exchange,提问作者Natasha
相关产品推荐
相关产品推荐

