SwiftUI问题:缩放子视图后HStack的绿色边框未完整包裹视图
问题解答:HStack未适配缩放后视图高度的原因
核心原因是**scaleEffect仅做视觉层面的缩放,不会改变视图在布局系统中占据的尺寸**。
你的代码里,每个Circle的frame固定为10x10,scaleEffect(3)只是把这个视图在视觉上放大3倍,但它在布局计算时的占位空间还是原来的10x10。因此HStack的高度由未缩放的视图尺寸加上spacing决定,自然不会适配缩放后的视觉高度。
想要让HStack的高度适配缩放后的视图,有两种实用方案:
- 方案一:直接调整frame尺寸(推荐)
把缩放比例融入到frame的宽高设置里,让布局系统直接使用放大后的尺寸:Circle() .border(.red) .frame( width: size.width * scale, height: size.height * scale ) - 方案二:强制父视图识别视觉尺寸
如果一定要保留scaleEffect,可以给缩放后的视图加上.fixedSize(),强制HStack考虑它的视觉大小:Circle() .border(.red) .frame(width: size.width, height: size.height) .scaleEffect(scale) .fixedSize()
内容的提问来源于stack exchange,提问作者Reimond Hill
相关产品推荐
相关产品推荐

