How do I position views relative to their top left corner in swiftUI? The \"position\" modifier moves the views relative to their center coordinates. So .position(x: 0, y:
@Asperi 's answer will solve the problem. But, I think we should use Spacer()
rather than Color.clear
and ZStack
.
Spacer
is specifically designed for these scenarios and makes the code easier to understand.
struct HomeView: View {
var body: some View {
HStack {
VStack(alignment: .leading) {
Text("Top Text")
.font(.system(size: 20))
.fontWeight(.medium)
Text("Bottom Text")
.font(.system(size: 12))
.fontWeight(.regular)
Spacer()
}
Spacer()
}
}
}
SwiftUI layout system is different from UIKit.
It asks each child view to calculate its own size based on the bounds of its parent view. Next, asks each parent to position its children within its own bounds.
https://www.hackingwithswift.com/books/ios-swiftui/how-layout-works-in-swiftui
If I correctly understand your goal the .position
is not appropriate instrument for it. SwiftUI layout works better without hardcoding.
Here is possible solution. Tested with Xcode 11.4 / iOS 13.4
struct HomeView: View {
var body: some View {
ZStack(alignment: .topLeading) {
Color.clear
VStack(alignment: .leading) {
Text("Top Text")
.font(.system(size: 20))
.fontWeight(.medium)
Text("Bottom Text")
.font(.system(size: 12))
.fontWeight(.regular)
}
}.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}