I have an image that I'm hard coding the size, but realized it's not scaling for larger size categories. How can I set a preferred size and let it scale up to different sizes automatically?
This is what my code looks like:
HStack(alignment: .top, spacing: 4) {
Text("Some text")
Button(action: { showAlert = true }) {
Image(systemName: "questionmark.circle.fill")
.resizable()
.frame(width: 12, height: 12)
.foregroundColor(.secondary)
}
}
I also have other scenario where it's not using a SF Symbol:
Button(action: action) {
Label(
title: {
Text(title)
.foregroundColor(Color(.label))
},
icon: {
Image("twitter")
.resizable()
.frame(width: 24, height: 24)
}
)
}
This is how it looks in preview in different sizes, but the images are tiny in the larger scales. How do I handle this to achieve accessibility?

SwiftUI 2.0 provides ScaledMetric for this purpose.
Here is a demo of solution. Tested with Xcode 12.1 / iOS 14.1
Normal text:

Largest text:

struct TestScaledImage: View {
@ScaledMetric var scale: CGFloat = 1 // << here !!
var body: some View {
HStack(alignment: .top, spacing: 4) {
Text("Some text")
Button(action: { }) {
Image(systemName: "questionmark.circle.fill")
.resizable()
.frame(width: 12 * scale, height: 12 * scale) // << here !!
.foregroundColor(.secondary)
}
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With