Auto Layout实现:让容器视图随UITextView而非UIImageView拉伸
解决方法
核心原因
Auto Layout 中视图的布局优先级决定了尺寸计算的优先级:你当前的UIImageView垂直方向的**内容拥抱优先级(Content Hugging Priority)和抗压缩优先级(Compression Resistance Priority)**高于UITextView,当UIImageView有内容时,系统会优先满足UIImageView的尺寸要求,导致容器被图片撑开。
操作步骤
你只需要降低UIImageView的垂直方向布局优先级即可,有两种实现方式:
方式1:故事板操作
- 选中
UIImageView,打开右侧「尺寸检查器」(标尺图标) - 找到
Vertical Content Hugging Priority选项,将数值改为249(低于UITextView的默认值250) - 找到
Vertical Compression Resistance Priority选项,同样将数值改为249 - 保留原有所有约束不变即可
方式2:代码实现
在视图控制器的生命周期方法中添加以下代码:
// yourImageView替换为你实际的UIImageView属性名 yourImageView.setContentHuggingPriority(.init(rawValue: 249), for: .vertical) yourImageView.setContentCompressionResistancePriority(.init(rawValue: 249), for: .vertical)
效果说明
调整后容器的高度将完全由UITextView的内容高度决定:
- 当图片高度小于容器高度时,图片会自动拉伸填充整个容器高度
- 当图片高度大于容器高度时,图片会按你的设置裁剪溢出部分,不会撑开容器
内容的提问来源于stack exchange,提问作者aheze
相关产品推荐
相关产品推荐

