即使设置了.lineLimit(nil)
,文本也不会换行。
var body: some View {
VStack(alignment: .center) {
Text("SwiftUI is a modern way to declare user interfaces for any Apple platform. ")
.font(.title)
.color(.red)
.lineLimit(nil)
Text("Create beautiful, dynamic apps faster than ever before.")
.font(.system(size: 20))
.lineLimit(nil)
}.padding(EdgeInsets(top: 0, leading: 10, bottom: 0, trailing: 10))
}
9条答案
按热度按时间2sbarzqh1#
在花了很多时间处理这样的错误之后,我不能100%确定这是lineLimit问题。在写这篇文章时,我发现对于更复杂的视图的解决方案是下面的代码片段,以防止 Package :
第一个月
这样可以防止解释器垂直折叠文本。
kqhtkvqz2#
截至Xcode 11.3 / Swift 5.1的完整解决方案可在此处的多个答案中找到。
发生这种情况的原因可在Matteo Pacini's answer中找到:使用预定义的
.font(.title)
、.font(.headline)
等似乎会带来这样的行为,即这些Text
视图将自己的大小调整为始终是椭圆形而不是换行。Sharpienero's answer中提供了最佳解决方法:将
.fixedSize(horizontal: false, vertical: true)
添加到Text
视图中,这将告诉Text
视图不要执行其自定义调整大小的水平逻辑NOT省略号,这将使其遵循我们都习惯的标准规则。感谢他们两个!
qyzbxkaa3#
尝试将第二个文本的
lineLimit
更改为数字而不是nil:结果:
kq0g1dla4#
看起来
font
包含换行属性。如果您将其更改为
body
,则其 Package 正确!gr8qqesn5#
对于我的问题,我有一个这样的设置:
出于某种原因,我所要做的就是将
minWidth: 480, idealWidth: 480
添加到帧中,然后正确地渲染所有内容。我没有预料到这一点,因为我已经应用了.fixedSize()
,所以我认为这三个中的一个应该就足够了。ao218c7q6#
快速用户界面
.lineLimit(空)与.lineLimit(任意数字)
ghhaqwfi7#
我遇到过一个涉及
UIViewRepresentable
Package 的UITextField
的情况,它显示为:当我添加
CustomTextField
时,Text
停止了 Package 。我对Text
所做的一切都无济于事。如果我删除Spacer()
,它 Package 得很好!!最后我删除了X1 M6 N1 X,并在X1 M7 N1 X中添加了底部填充。据我所知,我的X1 M8 N1 X很好,我不明白为什么它会影响SwiftUI布局算法。
yxyvkwin8#
唯一对我有效的答案是在文本上应用
.fixedSize(horizontal: false, vertical: true)
。我说“有点”是因为,通过使用
.fixedSize
,SwiftUI将完全忽略父节点给定的大小并使其溢出。如果父节点有背景,布局将被破坏。如果父节点有兄弟节点,文本将呈现在其上面。我真的相信苹果应该给予我们一个选择,让一个文本的理想大小是它的多行版本,而不是单行对应。
虽然没有发生这种情况,但我使用了下面的怪物,但它工作:
wsxa1bj19#
我刚加了
到我的
Text
示例,它工作了