2

Hi Im creating this design, with swiftUI but I can't figure out why the Text() is adding more padding to the string value, I just want it to the leading trailing, like margins

Design: enter image description here

Result:

enter image description here

Code:

    struct ProductDetailSwiftUIView: View {
    
        var body: some View {
            ZStack {
                ScrollView {
                    VStack {
                        Rectangle()
                            .frame(height: 213)
                            .foregroundColor(Color.blue)
                            
                        Text("Fresas Congeladas La Huerta 500g")
                            .foregroundColor(.black)
                            .font(Font.bodySemibold(22))
                            .multilineTextAlignment(.leading)
                            .frame(maxWidth: .infinity)
                            .background(Color.red)
                            .padding(.leading, 16)
                            .padding(.trailing, 16)
                    }
                }.toolbar {
                    ToolbarItem(placement: .navigationBarTrailing) {
                        Button {
                            print("Hello world")
                        } label: {
                            Label("Back", image:  "cartLine")
                        }.overlay(Badge(count: 1))
                    }
                }
            }
        }
    }
Eder Padilla
  • 1,507
  • 1
  • 13
  • 22

2 Answers2

6

At first Text is aligned centered in frame, so

Text("Fresas Congeladas La Huerta 500g")
    .foregroundColor(.black)
    .font(Font.bodySemibold(22))
    .multilineTextAlignment(.leading)
    .frame(maxWidth: .infinity, alignment: .leading)  // << fix 1 !!
    .background(Color.red)
    .padding(.leading, 16)
    .padding(.trailing, 16)

gives:

demo

At second SwiftUI Text does not allow orphan words. See next for details https://stackoverflow.com/a/71698509/12299030

Asperi
  • 228,894
  • 20
  • 464
  • 690
0

Remove .frame(maxWidth: .infinity) from your Text() to fix this problem.

enter image description here

Steven-Carrot
  • 2,368
  • 2
  • 12
  • 37