在SwiftUI中将文本字体更改为粗体时不调整堆栈内容的大小

4sup72z8  于 2023-08-02  发布在  Swift
关注(0)|答案(1)|浏览(105)

我有一个水平堆栈,其中包含两个文本:

HStack {
    Text("text1")
    Text("text2")
}

字符串
在某些时候,当我将第一个文本字体更改为粗体时,它显然会调整其大小,并将第二个文本推到右侧。
我想避免这种情况。标签可以去第二行肯定,框架可以调整垂直,但我想保持它的水平静态。
不知道什么是最好的方式做到这一点?
提前致谢

eqqqjvef

eqqqjvef1#

使用固定宽度:

Group {
    if bold {
        Text("text1").bold()
    } else {
        Text("text1")
    }
}.frame(width: 50)

字符串
如果没有足够的水平空间,文本将自动换行到下一行。
或者,将“较小”文本(非粗体文本)作为“较大”文本的覆盖。然后使较大的文本不可见。

if bold {
    Text("text1").bold()
} else {
    // invisible bold text...
    Text("text1").bold().opacity(0)
        .overlay {
            // ...with the non-bold text as an overlay
            Text("text1")
        }
}


这也可以写为:

Text("text1").bold().opacity(bold ? 1 : 0)
    .overlay {
        if !bold {
            Text("text1")
        }
    }

相关问题