You don't have to offer an alternative layout just for the accessibility category. You can actually compare content size categories. So you could tweak the UI already for anything equal to or larger than .extraExtraLarge, for example.

Apple Music app example. It shows how for the extra extra extra large size, it still shows the default layout but text is starting to wrap up way too early. It also shows the AX1 size, and how from there, the rows for the tracks allow more than one line of text for the labels. And it also shows it for the AX3 size, where the layout changes a bit more, moving the cover art so it comes before the text and not next to it, allowing more space for the text. The code compares the preferred content size category and if it is equal or more than accessibility medium, it allows for more lines of text, if it is more or equal than accessibility extra large, it changes the layout, else, it uses the default layout.

You may also find interesting...

Check isReduceTransparencyEnabled to lower transparency. A great example is Spotlight. Not only transparency is removed but it keeps the main color of the background, it feels personalized and contextual but reduces noise and improves contrast.

All the accessibility capabilities you can check for, have counterpart notification names you can observe in case the user changes its preferences while using your app. https://x.com/dadederk/status/1577435144129892352

If, for some reason, you are creating a button from scratch, instead of relying on UIButton (perhaps you are adding a fancy micro interaction animation?), take into account that you’ll need to configure the button accessibility trait.

Created in Swift with Ignite.

Supporting Swift for Swifts