I'll never recommend creating a custom component if there is a native one that does the job. But if you develop a custom tab bar, .tabBar accessibility trait comes to the rescue. Apply to a container view and its buttons will be announced as tabs.

An app that looks like Swarm has a custom tab bar. If the container view of the tab bar has the tabBar accessibility trait and its property isAccessibilityElement is false, its three buttons would be announced as: “selected, personal feed, Tab, 1 of 3”, “check-in, Tab, 2 of 3”, “friends, Tab, 3 of 3”. It indicates they’re tabs and their position in the custom tab bar.

You may also find interesting...

Images can automatically scale for accessibility content size categories, by setting the adjustsImageSizeForAccessibilityContentSizeCategory property to true, for any UIImageView you'd like to get its size adjusted. https://developer.apple.com/documentation/uikit/uiaccessibilitycontentsizecategoryimageadjusting/adjustsimagesizeforaccessibilitycontentsizecategory

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.

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.

Created in Swift with Ignite.

Supporting Swift for Swifts