skip to Main Content

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))
                    }
                }
            }
        }
    }

2

Answers


  1. 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

    Login or Signup to reply.
  2. Remove .frame(maxWidth: .infinity) from your Text() to fix this problem.

    enter image description here

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search