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

2 Answers 2

12

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

Sign up to request clarification or add additional context in comments.

Comments

0

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

enter image description here

2 Comments

didn't work but maybe cause of the custom font
Either way it is fine @Asperi answer worked. Happy coding!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.