How do I absolutely position a child view within the main window?
position(x:y:)
and offset(x:y:)
are relative to the parent.
The best I got to was to use GeometryReader
and calculate the position/offset, for example, to position the circle at the bottom of the screen:
GeometryReader { geo in
Circle()
.foregroundColor(.red)
.frame(width: 100, height: 100)
.offset(x: 0, y: UIScreen.main.bounds.size.height - geo.frame(in: .global).maxY)
}
But it's problematic. GeometryReader
distorts the layout and the result would change depending on the parent of Circle
.
Is there a well established way to position Circle, say in the middle of the width of the screen and 10% (or fixed amount) off of the bottom of the screen?
EDIT:
here's an example of what I'm trying to achieve:
struct InnerView: View {
var body: some View {
Circle()
.foregroundColor(.green)
.frame(width: 100, height: 100)
}
}
struct ContentView: View {
var body: some View {
LazyVGrid(columns: [.init(),.init()], content: {
InnerView()
InnerView()
InnerView()
})
}
}
Can one of the InnerView
s render their circle relative in the mid-bottom area of the window?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…