J'ai Button
struct ContentView : View {
var body: some View {
HStack {
Button(action: {}) {
Text("MyButton")
.color(.white)
.font(Font.system(size: 17))
}
.frame(height: 56)
.background(Color.red, cornerRadius: 0)
}
}
}
Mais je veux l'épingler sur les bords de Supeview (traînant à la fin de Superview et du début). Comme ça:
HStack
_ ne m'aidait pas, et cela s'attend à ce que cela s'attend à. Fixe frame
ou largeur est égal à UIScree.size
ne sont pas des solutions flexibles.
J'ai trouvé une solution:
var body: some View {
Button(action: {}) {
HStack {
Spacer()
Text("MyButton")
.color(.white)
.font(Font.system(size: 17))
Spacer()
}
.frame(height: 56)
.background(Color.red, cornerRadius: 0)
}.padding(20)
}
Mais je ne suis pas sûr que ce soit le meilleur. Peut être quelqu'un trouvera une solution plus élégante /
Voici une solution pure SWIFTUI où vous souhaitez remplir la largeur du parent, mais contraindre la hauteur à un rapport d'aspect arbitraire (disons que vous voulez des images carrées):
ZStack {
Image("myImage")
.resizable()
.scaledToFill()
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.clipped()
}
.aspectRatio(1.0, contentMode: .fill)
Il suffit de remplacer 1,0 avec le rapport de l'image que vous souhaitez.
J'ai passé une journée à essayer de comprendre cela parce que je ne voulais pas utiliser GeometryReader ou Uisreen.Main.bounds (qui n'est pas une plate-forme inter-plate-forme)