For other UI elements that could also benefit from being scaled when using Dynamic Type, you can use UIFontMetrics's scaledValue(for:). Some good examples are progress bar components, which tend to be quite slim.

https://developer.apple.com/documentation/uikit/uifontmetrics/scaledvalue(for:)

Two examples of the Netflix app, one with the default text size and another one with the largest accessibility text size. The progress bar for the first one is very thin. The second one is noticeably thicker. One way of doing this would be by setting the height anchor constraint of the bar to a value returned by the scaledValue function, passing the default height, in this case, 2.0, called from the default UIFontMetrics.

You may also find interesting...

One of my favourite Dynamic Type tricks is to use Stack Views and flip the axis from horizontal to vertical given a certain content-size-category threshold. So effortless and it works so well in so many scenarios.

Too much data can overwhelm users. Very little is an incomplete experience. It is hard to find a balance on verbosity and the users may have different preferences. To help with this issue, the AXCustomContent APIs let you mark data as optional.

@BeMyEyes, founded by @hjwiberg, enables people who are blind and low vision to identify objects by pairing them with volunteers from around the world using their camera. Winner of an Apple Design Award 2021 for Social Impact.

Created in Swift with Ignite.

Supporting Swift for Swifts