【问题标题】:SwiftUI generates unwanted space around an ImageSwiftUI 在图像周围生成不需要的空间
【发布时间】:2019-12-23 01:41:46
【问题描述】:

以下代码生成一个简单的 VStack,其中包含文本视图,它们之间没有显示间距(第 1 行和第 2 行)。

但是,将图像添加到第 3 行(绿色)会在整行上方和下方添加不需要的间距。

struct ContentView: View {
  var body: some View {
    VStack {
      HStack {
        Text("one thing")
      }.background(Color(.yellow))
      HStack {
        Text("nothing")
      }.background(Color(.red))
      HStack {
        Text("three")
        Image(systemName: "star")
          .resizable()
          .frame(width: 8, height: 8)
      }.background(Color(.green))
      HStack {
        Text("three things")
      }.background(Color(.red))
    }
  }
}

如何避免额外的多余空间?

空间显示与图像大小无关(即使图像尺寸只有几个像素)。

当然,我想知道为什么会产生这个空间。

感谢您的帮助

以上代码截图:

【问题讨论】:

    标签: swiftui


    【解决方案1】:

    你可以调整VStack的间距:

    var body: some View {
                VStack (spacing: 0) {
                     HStack {
                       Text("one thing")
                     }.background(Color(.yellow))
                     HStack {
                       Text("nothing")
                     }.background(Color(.red))
                     HStack {
                       Text("three")
                       Image(systemName: "star")
                         .resizable()
                         .frame(width: 8, height: 8)
                     }.background(Color(.green))
                     HStack {
                       Text("three things")
                     }.background(Color(.red))
                   }
                 }
    

    【讨论】:

    • 呃,是的。完美运行。仍然想知道为什么通过添加图像来增加间距...
    • 这需要很长时间才能找到感谢您的帮助。我的图像在 3 个 VStack 内,奇怪的是,我必须将中间 VStack 的间距设置为 0 才能解决此问题。