You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中ScrollView内视图使用.frame修饰符的尺寸计算逻辑及特殊表现疑问

SwiftUI中ScrollView内视图使用.frame修饰符的尺寸计算逻辑及特殊表现疑问

Tl;DR 为什么在ScrollView里的Color.red.frame(maxWidth: 500)视图高度只有1个像素?既不是500像素也不是0像素,这实在让人摸不着头脑!


我一直是这么理解SwiftUI布局定位和尺寸计算逻辑的:每个视图都会被父视图询问它的理想尺寸,视图会返回自己的最大尺寸需求,然后父视图会尽可能给它分配足够的空间。

按照这个逻辑我有两点认知:

  • Color视图默认会占用父视图能提供的所有可用空间
  • 当给视图加上.frame(maxWidth: 500)这类修饰符时,本以为它的宽度会被限制在500像素,高度仍会正常占用可用空间,但实际在ScrollView里它的高度却变成了1像素,这到底是怎么回事?

备注:内容来源于stack exchange,提问作者Andrei Herford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 17:13:18