我有一个有背景的Text
(这只是一个彩色气泡),我试图将它的maxWidth
限制在某个宽度,比如本例中的200
.
我遇到了.frame(..., maxWidth: ...)
美元的问题.
预期行为
- 较小的消息有多大就有多大
- 较大的消息的宽度最大为
maxWidth
,并且文本不会被截断
实际行为
- 无论应用
.background()
和.frame()
修改器的顺序是什么,Text
总是按照我设置的maxWidth
绘制.
更详细地说: 一百零二
Text(...)
.fixedSize(horizontal: false, vertical: true)
.background(
Rectangle()
)
.frame(maxWidth: 200)
这导致了所有Text
的帧的宽度是200-这是我不理解的.我知道之前应用了背景,所以背景大小是正确的,但为什么边框变成了最大宽度?我是不是误解了maxWidth:
帧的工作原理?
这种行为在没有.fixedSize()
修饰符的情况下是完全相同的,因为它所做的只是防止文本截断为...
一百零二
Text(...)
.fixedSize(horizontal: false, vertical: true)
.frame(maxWidth: 200)
.background(
Rectangle()
)
这再次显示了行为,但这一次背景也受帧的影响.修饰符的堆叠行为是意料之中的,但我还是不确定为什么文本要扩展到maxWidth
.
关于更多信息,这些Text
在HStack
范围内,Spacer()
在左侧.HStack
在较大的VStack
+ScrollView
范围内.
移除HStack
、Spacer()
或ScrollView/VStack
不会改变这种行为.
我试着给它打了minWidth
分,并应用了其他修饰符,但都无济于事.我很感激任何帮助,因为我觉得我错过了一些非常明显的东西!
谢谢.
编辑:更简洁.