Erweitern von @ rraphaels Antwort und Kommentaren:
Ab Xcode 11 Beta 2 können Sie ein Bild auf beliebige Abmessungen skalieren und dabei das ursprüngliche Seitenverhältnis beibehalten, indem Sie das Bild in ein anderes Element einschließen.
z.B
struct FittedImage: View
{
let imageName: String
let width: CGFloat
let height: CGFloat
var body: some View {
VStack {
Image(systemName: imageName)
.resizable()
.aspectRatio(1, contentMode: .fit)
}
.frame(width: width, height: height)
}
}
struct FittedImagesView: View
{
private let _name = "checkmark"
var body: some View {
VStack {
FittedImage(imageName: _name, width: 50, height: 50)
.background(Color.yellow)
FittedImage(imageName: _name, width: 100, height: 50)
.background(Color.yellow)
FittedImage(imageName: _name, width: 50, height: 100)
.background(Color.yellow)
FittedImage(imageName: _name, width: 100, height: 100)
.background(Color.yellow)
}
}
}
Ergebnisse
(Aus irgendeinem Grund wird das Bild etwas verschwommen angezeigt. Seien Sie versichert, dass die tatsächliche Ausgabe scharf ist.)