【问题标题】:SwiftUI How to align the bottom of two text with different font size?SwiftUI 如何对齐两个不同字体大小的文本的底部?
【发布时间】:2021-12-20 21:42:52
【问题描述】:

我正在尝试对齐两个 Text 的底部,但较大的一个看起来像 thismy widget looks like this。我不知道为什么这个 Text 视图下面还有一些空间。 这是我的代码:

var body: some View {
GeometryReader{geometry in
    ZStack(alignment: .center){
        Image("background")
            .resizable()
        VStack(){
            HStack(alignment: .bottom){
                Text("3")
                    .lineLimit(1)
                    .font(.bold(.system(size: 100))())
                    .minimumScaleFactor(0.1)
                    .foregroundColor(Color.white)
                    .frame(width: nil, height: geometry.size.height/3, alignment: .bottom)
                    .lineLimit(1)
                    .shadow(radius: 2)
                Text("cups")
                    .foregroundColor(Color.white)
                    .font(.system(size: 12))
                    .shadow(radius: 2)
            }
            Text("Next cup on")
                .foregroundColor(Color.white)
                .font(.system(size: 10))
                .shadow(radius: 2)
                .opacity(0.5)
            Text("10 : 00")
                .foregroundColor(Color.white)
                .font(.system(size: 12))
                .shadow(radius: 1)
                .opacity(0.5)
        }
    }
}

}

我想要的是数字 3 的底部与“杯子”的底部对齐。 谢谢!

【问题讨论】:

    标签: swift xcode swiftui


    【解决方案1】:

    您可以使用.lastTextBaseline 代替.bottom 作为HStack 对齐方式:

    HStack(alignment: .lastTextBaseline) {
        Text("Hello").font(.system(size: 40))
        Text("World").font(.system(size: 10))
    }
    

    【讨论】:

    • 谢谢!它可以工作,但我仍然不知道为什么即使我使用 .lastTextBaseline 的蓝色矩形中的文本下方还有一点空间。不过现在看起来不错,我只是想弄清楚原因。
    • 您必须创建一个可以由其他人编译的示例供我查看。
    • 我已经更新了问题。谢谢!
    • 啊——所以这是第二个问题,处理水平对齐?
    • 这只是一个从原始问题衍生出来的问题。我只是想知道机制。
    猜你喜欢
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2017-09-09
    • 2021-06-17
    • 1970-01-01
    • 2021-12-24
    • 2019-05-14
    • 2014-10-22
    相关资源
    最近更新 更多