I think your problem is in the .padding(8) line. When you have that padding it adds 8px to all four external sides of the Text label, making it too small to fit the text on one line. You can achieve your desired look by reducing the font size, too, but that's probably not of much use. I've just put this into a new project, and Xcode is showing the preview in an iPhone 14 Pro (or Max) where the result is perfectly fine, because that device is quite wide. I've added .frame(width 380) to the ScrollView so it can be seen on a smaller screen. I've given the various elements a background colour so you can see where they interact: struct ContentView: View { var body: some View { ScrollView { LazyVGrid(columns: [GridItem(.flexible()), GridItem(.flexible())]) { Stat() Stat() Stat() Stat() } } .frame(width: 380) // Change this to simulate smaller devices } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } struct Stat: View { var body: some View { VStack { Text(
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: