Sometimes, with large font sizes, there's no other way around it but to offer an alternative layout. Small tweaks are often enough. Otherwise, the text will be barely readable. Larger text shouldn't mean less content or a worse experience.

Apple music app. It shows a hypothetical case where the app scales text but doesn't change the layout. Only a few letters of the name of the song fit in each cell and there is no room for the name of the artist. In the other one, it shows how it actually works. The cover art comes above the text, instead of to the left, and the name of the song has three lines instead of just one. The code shows a way of doing this. You can override traitCollectionDidChange to get notified if the user changes the dynamic type size. In there, you can check the preferredContentSizeCategory from the trait collection, and it has a property called isAccessibilityCategory. In that case, you can offer an alternative layout.

One thing you can do is to check if the preferred content size category of a view is an accessibility category. And, in that case, move things around to make room for the text, offer more lines of text, etc.

https://developer.apple.com/documentation/uikit/uicontentsizecategory/isaccessibilitycategory

You may also find interesting...

I recommend running your app with Double-length Pseudolanguage. It is a great way to stress-testing your app and see how adaptive it is and if your UI will hold to other languages that might be a bit more verbose or even with larger text sizes.

You can add your Accessibility Shortcuts to Control Centre too. One more quick access point and one more reminder to get you testing often and quickly. How to enable Accessibility shortcuts: https://x.com/dadederk/status/1583519154165800960?s=61&t=_fK9Muzu2MyFEeJLVQZcJg

Potential benefits from grouping logical pieces of information and moving buttons to custom actions: reduce redundancy (by removing repetitive controls) and reduce cognitive load (by making easier to know what item will be affected by each action)

Created in Swift with Ignite.

Supporting Swift for Swifts