首页 > 解决方案 > swiftui间距不符合预期

问题描述

我的代码如下:

import SwiftUI


struct DotView: View {
    var body: some View {
        GeometryReader { geo in
            let width = geo.size.width
            VStack() {
                Circle()
                    .frame(width: width, height: width)
                Spacer()
                Circle()
                    .frame(width: width, height: width)
            }
        }
    }
}

struct TestView: View {
    var body: some View {
        GeometryReader { geo in
            VStack() {
                HStack() {
                    Text("11")
                    DotView()
                        .frame(width: 8, height: 23, alignment: .center)
                    Text("22")
                }
                .font(.system(size: 48))
                .background(Color.gray)
                HStack() {
                    Text("123456789")
                }
                .font(.system(size: 30))
                .background(Color.gray)
            }
            .frame(width: geo.size.width, height: geo.size.height)
            .background(Color.blue)
        }
    }
    
}

struct TestView_Previews: PreviewProvider {
    static var previews: some View {
        TestView()
            .frame(width: 200, height: 200, alignment: .center)
            .cornerRadius(23.0)
    }
}

视图如下图,“11:22”和“123456789”之间有间距

文本

但是,当我将视图评论DotView为以下代码时:

struct TestView: View {
    var body: some View {
        GeometryReader { geo in
            VStack() {
                HStack() {
                    Text("11")
//                    DotView()
//                        .frame(width: 8, height: 23, alignment: .center)
                    Text("22")
                }
                .font(.system(size: 48))
                .background(Color.gray)
                HStack() {
                    Text("123456789")
                }
                .font(.system(size: 30))
                .background(Color.gray)
            }
            .frame(width: geo.size.width, height: geo.size.height)
            .background(Color.blue)
        }
    }
}

文本

间距消失。为什么这个 DotView 会影响间距?

标签: swiftuispacing

解决方案


您可以在 TestView 中将“(间距:0)”添加到 VStack

VStack(间距:0)

在此处输入图像描述


推荐阅读